有一个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 的重复次数。
本题有一个坑,一个学生会多次选同一门课,比如 A 同学选了两次 Math,需要加 DISTINCT 参数。
SELECT
class
FROM
courses
GROUP BY
class
HAVING
COUNT(DISTINCT student) >= 5