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

28 阅读1分钟

1 题目描述

表: Courses

+-------------+---------+  
| Column Name | Type    |  
+-------------+---------+  
| student     | varchar |  
| class       | varchar |  
+-------------+---------+  

在 SQL 中, (student, class) 是该表的主键列
该表的每一行表示学生的名字和他们注册的班级
查询 至少有 5 个学生 的所有班级
任意顺序 返回结果表

2 测试用例

输入:
Courses table:

+---------+----------+  
| student | class    |  
+---------+----------+  
| A       | Math     |  
| B       | English  |  
| C       | Math     |  
| D       | Biology  |  
| E       | Math     |  
| F       | Computer |  
| G       | Math     |  
| H       | Math     |  
| I       | Math     |  
+---------+----------+  

输出:

+---------+  
| class   |  
+---------+  
| Math    |  
+---------+  

解释:
-数学课有 6 个学生, 所以我们包括它
-英语课有 1 名学生, 所以我们不包括它
-生物课有 1 名学生, 所以我们不包括它

3 解题思路

class 分组统计, 并使用 having 对分组结果进行筛选, 找到至少有 5 个学生的班级信息

select class  
from Courses  
group by class  
having count(*) >= 5;  

查询结果

+-----+  
|class|  
+-----+  
|Math |  
+-----+