Leetcode SQL[596] Classes more than 5 students
[175] Classes more than 5 stedents
有一个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 |
±--------+
Note:
学生在每个课中不应被重复计算。
思路
根据题目的意思,要提取出大于等于5次class的class 所以要用 having子句跟在group by(用来区分不同class)之后;此外要注意的是学生在每次课中不应被重复计算,所以having 子句中不能跟count(*) 而应该是count(distinct student) ,即根据class分类后,分组统计不重复的学生(distinct student),要求其符合条件。
代码
select class
from courses
group by class
having count(distinct student) >= 5;
收获
今晚网易数据分析实习岗的一道笔试题,极为相似,无奈刚学SQL一周,下午又夹杂着多元的小测,居然没想到使用having子句,在用where子句和子查询中把自己逻辑给绕晕了,不够熟练的结果啊!