Bootstrap

Leetcode SQL[596] Classes more than 5 students

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子句和子查询中把自己逻辑给绕晕了,不够熟练的结果啊!

;