yw172716

2020-10-15   阅读量: 662

Mysql 窗口函数

扫码加入数据分析学习群

窗口函数的基本语法如下:

<窗口函数> over (partition by) <用于分组的列名>

order by <用于排序的列名>

<窗口函数>的位置,可以放以下两种函数:

  1. 专用窗口函数

    • 序号函数:row_number() / rank() / dense_rank()

    • 分布函数:percent_rank() / cume_dist()

    • 前后函数:lag() / lead()

    • 头尾函数:first_val() / last_val()

    • 其他函数:nth_value() (用途:返回窗口中第N个expr的值,expr可以是表达式,也可以是列名)/nfile()(用途:将分区中的有序数据分为n个桶,记录桶号)/nfile()

  2. 聚合函数,如sum(), avg(), count(), max(), min()等

注意事项

  • 窗口函数对where和group by子句处理后的结果进行操作,所以原则上窗口函数只能写在select子句中

  • 聚合函数是将多条记录聚合为一条;而窗口函数是每条记录都会执行,查询结果并不会改变记录条数,有几条记录执行完还是几条

  • 普通聚合函数也可以用于窗口函数中,赋予它窗口函数的功能。

  • 窗口函数的执行顺序(逻辑上的)是在FROM,JOIN,WHERE,GROUP BY,HAVING之后,在ORDER BY,LIMIT,SELECT,DISTINCT之前。它执行时GROUP BY的聚合过程已经完成了,所以不会再产生数据聚合。


添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
51.9660 4 0 关注作者 收藏

评论(0)


暂无数据

推荐课程