9 查找每科成绩大于70的学生
我们有一张学生科目成绩表score_info_table,这张表记录了每一位同学每一科目的成绩,每一位同学的每科成绩是一行,现在我们想要通过这张表获取到每科成绩都大于70分的学生。
score_info_table表如下所示:
id | name | subject | score |
---|---|---|---|
1 | 王小凤 | 语文 | 88 |
2 | 张文华 | 数学 | 70 |
3 | 徐雨秋 | 英语 | 92 |
1 | 王小凤 | 语文 | 55 |
2 | 张文华 | 数学 | 77 |
3 | 徐雨秋 | 英语 | 77 |
1 | 王小凤 | 语文 | 72 |
2 | 张文华 | 数学 | 91 |
3 | 徐雨秋 | 英语 | 93 |
自己先想一下代码怎么写,然后再参考我的代码。
select
id
,name
from
demo.score_info_table
group by
id
,name
having
min(score) > 70
解题思路:
我们是要获取每科成绩大于70的学生,只要能够保证最小成绩是大于70分的,就说明这位同学每科成绩都大于70分.所以第一步就是先获取每位同学的最小成绩,先对name进行group by分组,再在组内求最小值,然后将最小成绩大于70分的同学通过having筛选出来即可。最后运行结果如下:
id | name |
---|---|
3 | 徐雨秋 |