596. 超过5名学生的课 - 力扣(LeetCode)

有一个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    |
+---------+

提示:

  • 学生在每个课中不应被重复计算。

一解

使用 GROUP BY 和 COUNT 计算 class 的重复次数。

:exclamation: 本题有一个坑,一个学生会多次选同一门课,比如 A 同学选了两次 Math,需要加 DISTINCT 参数。

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