有一个courses 表 ,有: student (学生) 和 class (课程)。 请列出所有超过或等于5名学生的课。 例如,表:
+---------+------------+
| student | class |
+---------+------------+
| A | Math |
| B | English |
| C | Math |
| D | Biology |
| E | Math |
| F | Computer |
| G | Math |
| H | Math |
| I | Math |
+---------+------------+
Note: 学生在每个课中不应被重复计算。
解题思路
此题主要考察队group的使用。容易忽略的一点就是对学生去重的忽略。
解题答案
字表查询
select class from
(select class, count(distinct student) as ct from courses group by class) as a
where ct >=5
group+having组合使用
SELECT CLASS
FROM COURSES
GROUP BY CLASS
HAVING COUNT(DISTINCT STUDENT) >= 5;