mysql怎么找题目 mysql题目在哪能搜( 五 )


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 "课程成绩高的学生的信息及课程分数
理清思路:
(1)学生信息和课程分数分布对应于student表和sc表
所以,我们需要把它们关联起来
(2)需要比较同一学生的不同成绩,所以需要再关联成绩表sc
(3)利用where进行筛选
1.1 查询同时存在" 01 "课程和" 02 "课程的情况
?什么叫做同时存在‘01‘和’02‘课程
?这里是指cid=’01‘ and cid ='02'?
理清思路:同一个学生既选了01课程 , 又选了02课程
1.2 查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显示为 null )
?如何让不存在某课程时显示为null
利用左关联(left join)
?case when--no
1.3 查询不存在" 01 "课程但存在" 02 "课程的情况
思路:找到不存在01课程的记录后,
然后再进行关联(Inner join)找存在02的课程
或者
2.查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩
思路:
成绩在sc表,学生姓名在student表,二者可以通过学生编号sid进行关联 。
首先,从sc表中查询平均成绩大于60的学生的信息
ERROR 1111 (HY000): Invalid use of group function
出现这个错就要往group by这里考虑,要记得:group by +having+聚合函数 。
一些错误尝试:
成功查询:
接着:通过学生编号sid与student表进行关联
发现结果明显不对,
继续修改:
注意:多个表进行关联时要明确字段的归属表;查询聚合函数的结果时 , 比如avg(score),最好进行重命名 。
存在疑问:
上面两种写法的差别就在于 子查询的avg(score)是否重命名,但是二者的结果明显有差异,想请问是为什么?是不是哪里没注意到?

推荐阅读