题12:
根据下表编写一个SQL语句列出所有超过或等于5名学生的课。
解题思路:
方法一:使用 GROUP BY 子句和子查询
(1)先统计每门课程的学生数量
SELECT
class, COUNT(DISTINCT student) AS num
FROM
courses
GROUP BY class
(2)再从中选择超过 5 名学生的课程。
SELECT
class
FROM
(SELECT
class, COUNT(DISTINCT student) AS num
FROM
courses
GROUP BY class) AS t
WHERE
num >= 5;
方法二:使用 GROUP BY 和 HAVING 条件, HAVING的关键是分组后筛选。
SELECT
class
FROM
courses
GROUP BY class
HAVING COUNT(DISTINCT student) >= 5