LeetCode-596.超过5名学生的课

      发布在:未分类      评论:0 条评论

596-超过5名学生的课

有一个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:
学生在每个课中不应被重复计算。


解题:

​ 使用GROUP BY将class分组,超过或等于5名学生的课,考虑使用COUNT()函数统计class。

解法一:GROUP BY

SELECT
    class
FROM
    courses
GROUP BY class
HAVING COUNT(DISTINCT student) >= 5

解法二:子查询

SELECT
    a.class
FROM
    (SELECT
        class,
        COUNT(DISTINCT student) count
    FROM
        courses
    GROUP BY class) a
WHERE a.count >= 5
Responses