【SQL经典50题】代码仅为个人答案,若有错误欢迎指正

mysql50答案 网上流传较广的50SQL训练,奋斗了不知道多久终于写完了。前18道的难度依次递增,从19开始的后半部分算是循环练习和额外function的附加练习,难度恢复到普通状态。 第9非常难,我反正没有写出来,如果有写出来了的朋友还请赐教。 这50道里面自认为应该没有太多错误,而且尽可能使用了最简单或是最直接的查询,有多种不相上下解法的目我也都列出了,但也欢迎一起学习的朋友进行讨论和解法优化啊~ ... 阅读详情

建表

1.学生表
Student(Sno,Sname,Sage,Ssex)

Sno 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别

2.课程表
Course(Cno,Cname,Tno)

Cno --课程编号,Cname 课程名称,T# 教师编号

3.教师表
Teacher(Tno,Tname)

Tno 教师编号,Tname 教师姓名

4.成绩表
SC(Sno,Cno,score)

Sno 学生编号,Cno 课程编号,score 分数

学生表 student
create table Student(Sno varchar(10),Sname varchar(10),Sage datetime,Ssex varchar(10))
insert into Student (Sno,Sname,Sage,Ssex) values(‘01’ , ‘赵雷’ , ‘1990-01-01’ , ‘男’);
insert into Student (Sno,Sname,Sage,Ssex) values(‘02’ , ‘钱电’ , ‘1990-12-21’ , ‘男’);
insert into Student (Sno,Sname,Sage,Ssex) values(‘03’ , ‘孙风’ , ‘1990-05-20’ , ‘男’);
insert into Student (Sno,Sname,Sage,Ssex) values(‘04’ , ‘李云’ , ‘1990-08-06’ , ‘男’);
insert into Student (Sno,Sname,Sage,Ssex) values(‘05’ , ‘周梅’ , ‘1991-12-01’ , ‘女’);
insert into Student (Sno,Sname,Sage,Ssex) values(‘06’ , ‘吴兰’ , ‘1992-03-01’ , ‘女’);
insert into Student (Sno,Sname,Sage,Ssex) values(‘07’ , ‘郑竹’ , ‘1989-07-01’ , ‘女’);
insert into Student (Sno,Sname,Sage,Ssex) values(‘08’ , ‘王菊’ , ‘1990-01-20’ , ‘女’);

科目表 Course
create table Course(Cno varchar(10),Cname varchar(10),Tno varchar(10))
insert into Course values(‘01’ , N’语文’ , ‘02’);
insert into Course values(‘02’ , N’数学’ , ‘01’);
insert into Course values(‘03’ , N’英语’ , ‘03’);

教师表 Teacher
create table Teacher(Tno varchar(10),Tname varchar(10));
insert into Teacher values(‘01’ , ‘张三’);
insert into Teacher values(‘02’ , ‘李四’);
insert into Teacher values(‘03’ , ‘王五’);

成绩表 SC
create table SC(Sno varchar(10),Cno varchar(10),score decimal(18,1));
insert into SC values(‘01’ , ‘01’ , 80);
insert into SC values(‘01’ , ‘02’ , 90);
insert into SC values(‘01’ , ‘03’ , 99);
insert into SC values(‘02’ , ‘01’ , 70);
insert into SC values(‘02’ , ‘02’ , 60);
insert into SC values(‘02’ , ‘03’ , 80);
insert into SC values(‘03’ , ‘01’ , 80);
insert into SC values(‘03’ , ‘02’ , 80);
insert into SC values(‘03’ , ‘03’ , 80);
insert into SC values(‘04’ , ‘01’ , 50);
insert into SC values(‘04’ , ‘02’ , 30);
insert into SC values(‘04’ , ‘03’ , 20);
insert into SC values(‘05’ , ‘01’ , 76);
insert into SC values(‘05’ , ‘02’ , 87);
insert into SC values(‘06’ , ‘01’ , 31);
insert into SC values(‘06’ , ‘03’ , 34);
insert into SC values(‘07’ , ‘02’ , 89);
insert into SC values(‘07’ , ‘03’ , 98);

练习题

50道练习题

1 查询" 01 “课程比” 02 "课程成绩高的学生的信息及课程分数

1-1 查询同时存在" 01 “课程和” 02 "课程的情况

1-2. 查询存在" 01 “课程但可能不存在” 02 "课程的情况(不存在时显示为 null )

1-3. 查询不存在" 01 “课程但存在” 02 "课程的情况

2.查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩

3 查询在 SC 表存在成绩的学生信息

4 查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为 null )

4-1 查有成绩的学生信息

5.查询「李」姓老师的数量

6.查询学过「张三」老师授课的同学的信息

7.查询没有学全所有课程的同学的信息

8.查询至少有一门课与学号为" 01 "的同学所学相同的同学的信息

9.查询和" 01 "号的同学学习的课程完全相同的其他同学的信息

10.查询没学过"张三"老师讲授的任一门课程的学生姓名

11 查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩

12 检索" 01 "课程分数小于 60,按分数降序排列的学生信息

13 按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩

14 查询各科成绩最高分、最低分和平均分:

以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率
及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90
要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列

15 按各科成绩进行排序,并显示排名, Score 重复时保留名次空缺

15-1 按各科成绩进行排序,并显示排名, Score 重复时合并名次

16.查询学生的总成绩,并进行排名,总分重复时保留名次空缺

16-1 查询学生的总成绩,并进行排名,总分重复时不保留名次空缺

17.统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[60-0] 及所占百分比

18.查询各科成绩前三名的记录

19.查询每门课程被选修的学生数

20.查询出只选修两门课程的学生学号和姓名

21.查询男生、女生人数

22.查询名字中含有「风」字的学生信息

23.查询同名同性学生名单,并统计同名人数

24 查询 1990 年出生的学生名单

25 查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列

26 查询平均成绩大于等于 85 的所有学生的学号、姓名和平均成绩

27.查询课程名称为「数学」,且分数低于 60 的学生姓名和分数

28.查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况)

29.查询任何一门课程成绩在 70 分以上的姓名、课程名称和分数

30.查询不及格的课程

31.查询课程编号为 01 且课程成绩在 80 分以上的学生的学号和姓名

32.求每门课程的学生人数

33.成绩不重复,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩

34.成绩有重复的情况下,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩

35.查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩

36.查询每门功成绩最好的前两名

37.统计每门课程的学生选修人数(超过 5 人的课程才统计)。

38.检索至少选修两门课程的学生学号

39.查询选修了全部课程的学生信息

40.查询各学生的年龄,只按年份来算

41.按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一

42.查询本周过生日的学生

43.查询下周过生日的学生

44.查询本月过生日的学生

45.查询下月过生日的学生

个人答案(若有错误请赐教)

-- 1. 查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数
select c.*,d.cno,d.score
from student c left join sc d on c.sno=d.sno
where c.sno in (select a.sno
from
(select * from sc where cno='01')A left join 
(select * from sc where cno='02')B on A.sno=B.sno
where a.score >  b.score)


-- 1.1 查询同时存在" 01 "课程和" 02 "课程的情况
select a.sname,b.cno,b.score,c.cno,c.score
from student a 
join( 
select *
from sc 
where cno = '01')b on a.sno=b.sno
join(
select *
from sc 
where cno  = '02')c on a.sno=c.sno


-- 1.2 查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显示为 null )
select a.sname,b.cno as cno1,b.score as score1,c.cno as cno2,c.score as score2
from student a
join(select *
from sc 
where cno = '01')b on a.sno=b.sno
left join(
select *
from sc 
where cno ='02')c on a.sno=c.sno
 

-- 1.3 查询不存在" 01 "课程但存在" 02 "课程的情况
select *
from(select a.sname,b.cno as cno1,b.score as score1,c.cno as cno2,c.score as score2
from student a
left join(select *
from sc 
where cno = '01')b on a.sno=b.sno
join(
select *
from sc 
where cno ='02')c on a.sno=c.sno)t
where t.score1 is null


-- 2. 查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩
select a.sno,b.sname,a.平均成绩
from 
(select sno,avg(score) as '平均成绩'
from sc
group by sno
having avg(score)>=60)a left join student b
on a.sno=b.sno


-- 3. 查询在 SC 表存在成绩的学生信息
select distinct b.*
from sc a left join student b on a.sno = b.sno 


-- 4. 查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为 null )
select a.sno,a.sname,b.选课总数,b.总成绩
from ((select sno,sname from student)a
left join (select sno,count(cno) as '选课总数',sum(score) as '总成绩' from sc group by sno)b on a.sno=b.sno) 


-- 4.1 查有成绩的学生信息
select *
from student
where sno in (select distinct sno from sc)  


-- 5. 查询「李」姓老师的数量 
select count(tno)
from teacher
where tname like '李%'


-- 6. 查询学过「张三」老师授课的同学的信息 
select * 
from student
where sno in
(select sno
from sc
where cno in
(select cno
from teacher a left join course b on a.tno=b.tno
where tname = '张三'))
 
 
-- 7. 查询没有学全所有课程的同学的信息 
select *
from student
where sno in 
(select sno
from sc
group by Sno
having count(cno) !=
(select count(cno)
from course) and count(cno) !=0 ) 


-- 8. 查询至少有一门课与学号为" 01 "的同学所学相同的同学的信息 
select *
from student
where sno in (select distinct sno
from sc
where cno in (select cno
from sc
where sno = '01') and sno !='01')


-- 9. 查询和" 01 "号的同学学习的课程完全相同的其他同学的信息 
select B.* from (select * from student where Sno!='01') B JOIN (select Sno,GROUP_CONCAT(Cno) gc from sc GROUP BY Sno ) A on A.Sno=B.Sno where A.gc=(select GROUP_CONCAT(Cno) from sc where Sno='01')
	

select *
from student
where sno in (
select sno 
from (select sno,group_concat(cno) gc  from sc where sno != '01' group by sno)t
where t.gc=(select GROUP_CONCAT(Cno) from sc where Sno='01'))


-- 10. 查询没学过"张三"老师讲授的任一门课程的学生姓名 
select sname
from student
where sno not in
(select sno
from sc
where cno = (select b.cno
from teacher a left join course b on a.tno=b.tno
where a.tname='张三'))
 

-- 11. 查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩 
select a.sno,b.sname,avg(a.score)
from sc a left join student b on a.sno=b.sno
where a.sno in (select t.sno
from(select *
from sc
where score<60)t
group by t.sno
having count(t.sno) >=2)
group by a.sno,b.sname


-- 12. 检索" 01 "课程分数小于 60,按分数降序排列的学生信息
select b.*,a.score
from sc a left join student b on a.sno=b.sno
where cno='01' and score < 60
order by score desc


-- 13. 按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩
select a.*,b.平均成绩
from sc a left join (select sno,avg(score) as '平均成绩'
from sc
group by sno)b on a.sno = b.sno
order by b.平均成绩 desc


-- 14. 查询各科成绩最高分、最低分和平均分:
-- 
--     以如下形式显示:课程 ID,课程name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率
--     及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90
--     要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列
select distinct a.cno,b.cname,c.最高分,c.最低分,c.平均分,d.及格率,e.中等率,f.优良率,g.优秀率
from sc a
left join course b on a.cno = b.cno
left join (select cno,max(score) as '最高分',min(score) as '最低分',avg(score) as '平均分' from sc group by cno )c on a.cno=c.cno
left join (select cno,sum(case when score>=60 then 1 else 0 end)/count(*) as '及格率' from sc group by cno)d on a.cno=d.cno
left join (select cno,sum(case when score >= 70 and score< 80 then 1 else 0 end)/count(*) as '中等率' from sc group by cno)e on a.cno = e.cno
left join (select cno,sum(case when score >= 80 and score< 90 then 1 else 0 end)/count(*) as '优良率' from sc group by cno)f on a.cno=f.cno
left join (select cno,sum(case when score >=90 then 1 else 0 end)/count(*) as '优秀率' from sc group by cno)g on a.cno = g.cno



SELECT a.cno, b.cname, MAX(a.score) 最高分, MIN(a.score)最低分, AVG(a.score) 平均分, 
COUNT(IF(a.score>=60, sno, NULL)) / COUNT(sno) 及格率,
COUNT(IF(a.score>=70 and a.score <80, sno, NULL)) / COUNT(sno) 中等率,
COUNT(IF(a.score>=80 and a.score <90, sno, NULL)) / COUNT(sno)良好率,
COUNT(IF(a.score>=90, sno, NULL)) / COUNT(sno) 优秀率
FROM sc a
LEFT JOIN course b ON b.cno = a.cno
GROUP BY cno,Cname


-- 15. 按各科成绩进行排序,并显示排名, Score 重复时保留名次空缺
select *,RANK()over(partition by cno order by score desc)排名 from SC


-- 15.1 按各科成绩进行排序,并显示排名, Score 重复时合并名次
select cno,sno,score,dense_rank() over (partition by cno order by score desc) as `rank`
from sc


-- 16.  查询学生的总成绩,并进行排名,总分重复时保留名次空缺
select t.*,rank()over(order by t.总成绩 desc) as '排名' 
from(select sno,sum(score) as '总成绩'
from sc
group by sno)t
-- 16.1 查询学生的总成绩,并进行行排名,总分重复时不保留名次空缺
select t.*,dense_rank()over(order by t.总成绩 desc) as '排名' 
from(select sno,sum(score) as '总成绩'
from sc
group by sno)t


-- 17. 统计各科成绩各分数段人数:课程编号,课程名称,[100-85][85-70][70-60][60-0] 及所占百分比
-- 
select distinct a.cno,b.cname,c.`[100-85]`,c.所占百分比,d.`[85-70]`,d.所占百分比,e.`[70-60]`,e.所占百分比,f.`[60-0]`,f.所占百分比
from sc a 
left join course b on a.cno=b.cno
left join (select cno,sum(case when score >85 and score<=100 then 1 else 0 end) as '[100-85]'
,(sum(case when score >85 and score<=100 then 1 else 0 end)/count(*))*100 as '所占百分比' from sc group by cno)c on a.cno=c.cno
left join (select cno,sum(case when score >70 and score<=85 then 1 else 0 end) as '[85-70]'
,(sum(case when score >70 and score<=85 then 1 else 0 end)/count(*))*100 as '所占百分比' from sc group by cno)d on a.cno=d.cno
left join (select cno,sum(case when score >60 and score<=70 then 1 else 0 end) as '[70-60]'
,(sum(case when score >60 and score<=70 then 1 else 0 end)/count(*))*100 as '所占百分比' from sc group by cno)e on a.cno=e.cno
left join (select cno,sum(case when score >=0 and score<=60 then 1 else 0 end) as '[60-0]'
,(sum(case when score >=0 and score<=60 then 1 else 0 end)/count(*))*100 as '所占百分比' from sc group by cno)f on a.cno=f.cno




-- 18. 查询各科成绩前三名的记录
select t.cno,t.sno,t.score,t.排名 from(select *,rank() over(partition by cno order by score desc) as '排名'
from sc)t where t.排名<4


SELECT a.cno,a.score,COUNT(B.score) +1 as ranking
FROM SC a LEFT JOIN SC b 
ON a.Cno = b.Cno AND a.score<b.score
GROUP BY a.Cno,a.Sno,a.score
HAVING ranking <= 3
ORDER BY a.cno,ranking



-- 19. 查询每门课程被选修的学生数 
select cno,count(*) 
from sc
group by cno


-- 20. 查询出只选修两门课程的学生学号和姓名 
select sno,sname
from student
where sno in
(select sno
from sc
group by sno
having count(sno) = 2)


-- 21. 查询男生、女生人数
select ssex,count(ssex) as '人数'
from student
group by ssex


-- 22. 查询名字中含有「风」字的学生信息
select *
from student
where sname like '%风%'


-- 23. 查询同名同性学生名单,并统计同名人数
select A.*,B.同名人数 from Student A
left join (select Sname,Ssex,COUNT(*)同名人数 from Student group by Sname,Ssex)B 
on A.Sname=B.Sname and A.Ssex=B.Ssex
where B.同名人数>1


-- 24. 查询 1990 年出生的学生名单
select *
from student
having year(sage) = '1990'


-- 25. 查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列
select cno,avg(score)
from sc
group by cno
order by avg(score) desc,cno


-- 26. 查询平均成绩大于等于 85 的所有学生的学号、姓名和平均成绩 
select b.sno,a.sname,b.平均成绩
from student a join (select sno,avg(score) as '平均成绩'
from sc
group by sno
having avg(score)>=85)B
on a.sno=b.sno 

-- 27. 查询课程名称为「数学」,且分数低于 60 的学生姓名和分数 
select b.sname,a.score
from (select sno,score
from sc a left join course b on a.cno=b.cno
where cname = '数学' and score<60)a left join student b on a.sno=b.sno


-- 28. 查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况)
select t.sno,t.sname,t.cno,d.cname,t.score
from (select a.sno,a.sname,b.cno,b.score
from student a left join sc b on a.sno=b.sno)t left join course d on t.cno = d.cno


-- 29. 查询任何一门课程成绩在 70 分以上的姓名、课程名称和分数
select a.sname,b.cname,t.score
from(select *
from sc 
where score >70)t left join student a on t.sno=a.sno
left join course b on t.cno=b.cno
 

-- 30. 查询不及格的课程
select a.sno,b.cname,a.score
from (select *
from sc
where score<60)a left join course b on a.cno=b.cno


-- 31. 查询课程编号为 01 且课程成绩在 80 分以上的学生的学号和姓名
select a.sno,b.sname
from (select sno from sc where cno='01' and score >80)a left join student b on a.sno=b.sno


-- 32. 求每门课程的学生人数 
select cno,count(*)
from sc 
group by cno

-- 33. 成绩不重复,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩
select * from (select sno,score,dense_rank() over(partition by cno order by score desc) as 'rank'
from sc
where cno in 
(select a.cno
from course a left join teacher b on a.tno=b.tno
where b.tname = '张三'))t
where t.rank = 1

-- 34. 成绩有重复的情况下,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩
select * from (select sno,score,dense_rank() over(partition by cno order by score desc) as 'rank'
from sc
where cno in 
(select a.cno
from course a left join teacher b on a.tno=b.tno
where b.tname = '张三'))t
where t.rank = 1


-- 35. 查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩 
select distinct a.* 
from sc a join sc b on a.Sno=b.Sno
where a.score=b.score and a.Cno!=b.Cno


-- 36. 查询每门课成绩最好的前两名
select t.*
from(select *,row_number() over(partition by cno order by score desc) as 'rank'
from sc)t
where t.`rank` <= 2

-- 37. 统计每门课程的学生选修人数(超过 5 人的课程才统计)。
select cno,count(*)
from sc
group by cno
having count(*) >5


-- 38. 检索至少选修两门课程的学生学号
select sno,count(*)
from sc
group by sno
having count(*)>=2


-- 39. 查询选修了全部课程的学生信息
select *
from student
where sno in (select sno from sc group by sno having count(*) = (select count(distinct cno) from sc ))


-- 40. 查询各学生的年龄,只按年份来算 
select sno,sname,(year(now()) - year(sage)) as age
from student


-- 41. 按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一
select sage,(DATE_FORMAT(NOW(),'%Y')-DATE_FORMAT(sage,'%Y') - 
				(case when DATE_FORMAT(NOW(),'%m%d')>DATE_FORMAT(sage,'%m%d') then 0 else 1 end)) as age
from student
		

-- 42. 查询本周过生日的学生
select * 
from student 
where WEEK(DATE_FORMAT(NOW(),'%Y%m%d'))=WEEK(sage)
	
select * 
from student 
where YEARWEEK(sage)=YEARWEEK(DATE_FORMAT(NOW(),'%Y%m%d'))
	
select WEEK(DATE_FORMAT(NOW(),'%Y%m%d')) #查看当前周数


-- 43. 查询下周过生日的学生
select * 
from student 
where WEEK(DATE_FORMAT(NOW(),'%Y%m%d'))=WEEK(sage)-1


-- 44. 查询本月过生日的学生
select * 
from student 
where month(DATE_FORMAT(NOW(),'%Y%m%d'))=month(sage)

-- 45. 查询下月过生日的学生
select * 
from student 
where month(DATE_FORMAT(NOW(),'%Y%m%d'))=month(sage)-1
[数据库SQL实战] 100习答案 流传较广的50SQL训练,奋斗了不知道多久终于写完了。前18道的难度依次递增,从19开始的后半部分算是循环练习和额外function的附加练习,难度恢复到普通状态。 第9非常难,我反正没有写出来,如果有写出来了的朋友还请赐教。 这50道里面自认为应该没有太多错误,而且尽可能使用了最简单或是最直接的查询,有多种不相上下解法的目我也都列出了,但也欢迎一起学习的朋友进行讨论和解法优化啊~! 数... 阅读详情

相关推荐

SQL+HIVE 目:查询下周过生日的学生

就这短短一个小问,本人汗颜,花了近两个小时才搞明白,具体步骤如下,望指正! 1、表内容     首先考虑什么是下周:现在可以得到的是现在的时间,current_data(),在通过dayofweek可以知道现在是周几。     确定星期几之后,就要弄清楚从今天到下周一差了几天,经过测试可以发现用9减去星期数在加上当前日期就可以得到下周一的日期,然后在用date_add(),就可以计算出下周日的日期     最后就是排查学生生日的月份和天数在这两个日期之间的人,本人就是一直在这里卡壳了,首先我直接想取出月份

WCL0520的博客 2902

数据库模拟考试

第1套综合试卷 五种基本关系代数运算是[ ] U,-,×,π和σ U,-,∞,π和σ U,n,x,π和σ U,n,∞,π和σ 正确答案: A 下列聚集函数中不忽略空值(null)的是[ ] SUM(列名) MAX(列名) COUNT(*) AVG(列名) 正确答案: C 设关系模式R(A,B,C),F是及上成立的FD集,F={B→C},则分解ρ{AB,BC}[ ] 是无损联接,也是保持FD的分解 是无损联接,但不保持FD的分解 不是无损联接,但保持FD的分解 既不是无损联接,也不保持FD的分解

TwcatL 2322

STM32G474实战:数字LLC电源控制程序从零到跑通(附完整代码解析)

本文详细介绍了基于STM32G474微控制器开发数字LLC电源控制程序的完整实战流程。从硬件平台搭建、CubeMX工程配置,到核心控制逻辑、双速率中断框架、数字PID实现,再到Burst模式、状态机等高级策略与异常处理,提供了从零到跑通的系统化指南与代码解析,助力开发者掌握高效数字电源的程序写与调试技巧。

s1t2u3的博客 1167

‌有关系模式:Teacher(Tno教师号,Tname教师姓名,Dept所在部门,Bno借阅图书号,Bname书名,Bdate借书日期,Rdate还书日期)。该关系模式中教师号是唯一的,图书号...

根据您提供的信息,我们可以推断出Teacher表的结构如下: Tno (主键) | Tname | Dept | Bno (外键) | Bname | Bdate | Rdate 其中,TnoTeacher表的主键,表示教师号是唯一的。Bno是外键,表示图书号是唯一的。 需要注意的是,您提到的关系模式中没有涉及到其他表,因此我们可以推断出Teacher表是一个独立的表,而不是与其他表建立联系...

weixin_35751194的博客 1215

MySQL查询基础练习

MySQL查询基础练习。

天涯何处无芳草,相逢何必曾相识。 709

SQL查询本周过生日、下周过生日、接下来任意天数内过生日、接下来过生日的任意数量的数据

代码SQL查询本周过生日、下周过生日、接下来任意天数内过生日、接下来过生日的任意数量的数据。

weixin_45151960的博客 1534

数据分析 | MySQL45道练习(37~45)

MySQL45道练习

weixin_42444823的博客 1411

SQL经典50练习

SQL这套50在网上流传很广,是比较经典、全面的一套,最近刚入职数据开发工程师,SQL需要加强,因此自然不能错过这套答案都是自己写的,有错误或者可以改进的地方欢迎指出。 数据表介绍 中所需数据来自四个表,分别是学生-成绩-课程-老师,此处列出四个表的字段与关联图 创建表及插入数据 学生表Student create table Student(SId varchar(10),Sname varchar(10),Sage datetime,Ssex varchar(10)); i

weixin_43348955的博客 1万+

50SQL练习答案与详细分析

在简书上看到的一篇50SQL练习,感觉挺不错的,整理如下。但是貌似作者使用的是Mysql做的吧!我用SQLServer来做时,很多和作者的答案不一致,不过大致思路是一样的,可能不同数据库的语法不一样吧!大家如果遇到发现作者答案和自己的不一致时,可能并不是作者写错了。 --转载者的话 网上流传较广的50SQL训练,奋斗了不知道多久终于写完了。前18道的难度依次递增,从19开始的...

周杰伦 3441

50SQL练习答案与详细分析:

流传较广的50SQL训练,奋斗了不知道多久终于写完了。前18道的难度依次递增,从19开始的后半部分算是循环练习和额外function的附加练习,难度恢复到普通状态。 第9非常难,我反正没有写出来,如果有写出来了的朋友还请赐教。 这50道里面自认为应该没有太多错误,而且尽可能使用了最简单或是最直接的查询,有多种不相上下解法的目我也都列出了,但也欢迎一起学习的朋友进行讨论和解法优化啊~! ...

Juunnry的博客 1万+

SQL语句练习50-彻底教会你怎么写SQL的查询(一)

五十道关于SQL查询的

m0_74277350的博客 1776

每天一道大厂SQL【Day01】访问量统计

大家好,我是Maynor。相信大家和我一样,都有一个大厂梦,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间,基于大数据岗面试中的经典,以每日1的形式,带你过一遍热门SQL及恰如其分的解答。一路走来,随着问加深,发现不会的也愈来愈多。但底气着实足了不少,相信不少朋友和我一样,日积月累才是最有效的学习方式!

Maynor的博客 1万+

MySql查询本周或下周过生日的人

这几我想了很久,因此记录一下. 做思路,先将学生的生日年份统一成当前时间的年份,这样就可以直接用相差的天数判断是否本周或者下周过生日了 首先还是来建表加数据吧 -- 创建表格 create table student( s_id varchar(20) not null, s_name varchar(255) not null default '', s_birth varchar(20) not null default '', s_sex varchar(10) not null defa

programmer_trip的博客 6670

sql 求本周过生日的同学和下周过生日的学生

思路:可以通过将同学们的Sage转化为今年同一时间 然后判断此时间是否处于本周。统计本周过生日的同学。统计下周过生日的同学。

Darling博客 588

Mysql 练习

练习数据 数据表 –1.学生表 Student(SId,Sname,Sage,Ssex) –SId 学生号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 –2.课程表 Course(CId,Cname,TId) –CId --课程号,Cname 课程名称,TId 教师号 –3.教师Teacher(TId,Tname) –TId 教师号,Tname 教师姓名 –4.成绩表...

victoyr的博客 972

数据库复习2

where s.Sno=c.Sno and c.Cno=co.Cno and co.Tno = t.Tno and Tname='吴大'where s.Sno=c.Sno and c.Cno=co.Cno and co.Tno = t.Tno and Tname='吴大'8、查询学过号为"1"但是没有学过号为"2"的课程的同学的学号,姓名,按学号降序。7、查询学过号为"1"并且也学过号为"2"的课程的同学的学号,姓名,按学号降序。6、查询学过号为"1"并且也学过号为"2"的课程的同学的学号。

STATICHIT静砸的博客 1130

SQL39道代码练习

🎉推荐up主专文章【C语言程一百】📌QQ:3052645092 有问可以一起讨论哦⭐️ 财压奴婢手,艺压当行人,一起拼搏吧。

m0_56398287的博客 3085

100天精通Python(数据分析篇)——第53天:初识pandas模块_基础介绍

一、初始pandas 1. 什么是pandas? 2. 为什么要学习pandas? 3. pandas的优势 4. 下载安装pandas 二、Pandas的数据类型 1. Series 2. DataFrame

努力让自己发光,对的人才能迎着光而来 17万+

更新至2024年,各省数字经济相关指标数据(20个指标)

更新至2024年,各省数字经济相关指标数据(20个指标)更新至2024年,各省数字经济相关指标数据集(20个指标)1、时间:更新至2024年,具体时间如下2、指标:互联网宽带接入端口(2006-2024)、互联网宽带接入用户(2011-2024)、互联网域名数(2011-2024年)、移动电话普及率(2010-2024)、长途光缆线路长度(2006-2024)、软件业务收入(2012-2024年)、电信业务总量(2006-2024)、有电子商务交易活动的企业数(2013-2024)、有电子商务交易活动的企业数比重(%)(2013-2023)、电子商务销售额(2013-2024)、每百人使用计算机数()(2013-2024)、每百家企业拥有网站数(2013-2024)、数字普惠金融指数(2011-2023)、规模以上工业企业R&D人员全时当量(2011-2024)、规模以上工业企业R&D经费(2011-2024)、规模以上工业企业R&D项目数(2011-2021)、技术市场成交额(2006-2024,西藏2017年之前缺失)、国内专利申请授权量(2006-2024)、快递量(2006-2024)、快递业务收入(2011-2024)3、范围:31省,其中软件业务收入为30省不含西藏4、来源:国家统计J、各省NJ、统计NJ

上一篇: [MySQL]窗口函数
下一篇: 【七周】第一周.数据分析思维
Chang3l
博客等级 码龄6年 1粉丝 8原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值