596. 超过5名学生的课
题目链接:https://leetcode-cn.com/problems/classes-more-than-5-students/
题目:
有一个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 |
±--------+
提示:
学生在每个课中不应被重复计算。
解析:
使用方法:
1.group by - having的用法
group by我们可以先从字面上来理解,group表示分组,by 后面写字段名,就表示根据哪个字段进行分组。
group by必须得配合聚合函数来用,分组之后你可以计数(count),求和(sum),求平均数(avg)等。
常用聚合函数:
- count() 计数
- sum() 求和
- avg() 平均数
- max() 最大值
- min() 最小值
2.having:having相当于条件筛选,但它与where筛选不同,having是对于group by对象进行筛选。
3.distinct:这个关键字来过滤掉多余的重复记录只保留一条。
答案:
select
class
from
courses
group by
class
having count(distinct student) >= 5;