文章目录
- Mysql 8.0新特性
- 窗口函数
- 常见窗口函数
Mysql 8.0新特性
窗口函数
- 理解:
窗口函数的作用类似于在查询中对数据进行分组,类似于聚合函数,但不同的是把聚合函数是分组的记录合成一条,也就是一组一条数据,窗口函数会将结果放在每一天记录中,每一组相当于一个窗口。
例如,统计每个部门的销售额,如果是聚合函数,就是每一个部门是一条数据,如果是窗口函数,则每一个员工是一条数据。 - 窗口函数分类
- 静态窗口函数
- 动态窗口函数
- 窗口函数的语法格式
函数名() over (PARTITION BY 分组字段 ORDER BY 排序字段)
或
函数名 over 窗口名 ...... WINDOW 窗口名 as ( partition by .... order by .....)
常见窗口函数
- 序号函数
ROW_NUMBER()
作用:对表中的内容进行分类排序显示,相当于,有全校排名,这个序号函数可以根据全校排名的到班级排名,在班级内部进行排序,各个班级互不干扰
总结:根据特定条件分组,然后再小组额你
例如,使用窗口函数row_number(),根据prod字段分组,然后组内按price排序,每条数据都有一个组内的顺序SELECT row_number() over(PARTITION BY prod ORDER BY price DESC) pid,id ,prod, NAME ,price FROM ch
* rank()函数
作用: 根据条件分组,并对组内数据进行排序,可以并列排序并跳过重复序号,例如 1,1,3
- DENSE_RANK()函数
作用:根据条件分组,并对组内数据进行排序,可以并列排序,但是不跳过重复序号,例如,1,2,2 ,3 - 分布函数
- PERCENT_RANK()函数
作用:等级值百分比函数,返回的结果是(当前排名-1)/(本组总记录-1),- CUME_DIST() 函数
作用:本组中小于等于条件字段的比例
- CUME_DIST() 函数
- PERCENT_RANK()函数
其他窗口函数
- 总的来说,窗口函数,就当作普通函数来使用,用来获取特定字段,主要是获取分组内的特定字段。