例题:
每个学生选课最多的前三名
数据:
代码:
SELECT name FROM student group by name ORDER BY count(count_id) desc limit 3
group by
- 配合聚合函数使用,可以实现去重(distinct)的效果。
- 根据某个字段分组的效果如图:所以除了name字段,其他的字段都需要使用聚合函数(count、sum)等,直接select * 会报错。
order by
- 用来排序、默认为升序(asc)
- 也可以指定为降序(desc)
limit
- 多用于排序之后寻找前几位的数值、或者后几位的数值。等价于聚合函数max或者min。
- 例如:max(age) <==> order by age limit 1
having by
- 聚合函数作为限定条件时使用,此时不能使用where。
- 例如:
需要返回平均年龄大于20的数据:having by avg(age) > 20;
union
去重或者不去重、有先后输出顺序的情景使用。而不使用or
- union all:不去重
- union:去重
常见的函数使用
case函数的使用
代码片段:
日期的使用
字符串的截取
条件判断
sum(if(result = ‘right’, 1, 0))as right_question
窗口的使用
over(partition by 分组 order by 排序)
例题链接:https://leetcode-cn.com/problems/game-play-analysis-iii/
四舍五入
round(date数据,几位小数)