596. 超过5名学生的课
SQL架构
有一个courses 表 ,有: student (学生) 和 class (课程)。
请列出所有超过或等于5名学生的课。
例如,表:
+---------+------------+
| student | class |
+---------+------------+
| A | Math |
| B | English |
| C | Math |
| D | Biology |
| E | Math |
| F | Computer |
| G | Math |
| H | Math |
| I | Math |
+---------+------------+
应该输出:
+---------+
| class |
+---------+
| Math |
+---------+
提示:
学生在每个课中不应被重复计算。
题解:
直接分组计算次数即可,但是需要注意的是会出现“重修”的情况,即一个人修了两次同样的课程,因此为了避免这种情况我们直接在根据class分好组后对学生的名字去重后再计算个数即可。
代码:
select class
from courses
group by class
having count(distinct student)>=5