MySQL窗口函数代码应用示例及解说

2023-04-2708:51:37数据库教程Comments1,181 views字数 863阅读模式

1、概念简介文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/37453.html

窗口函数,也叫分析函数,也有称开窗函数。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/37453.html

可实现复杂的统计分析,统计数据分为灵活可变,是一种非常重要且常用的分析(OLAP)函数。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/37453.html

窗口函数可以轻易实现在excel中需要多次透视或者很多步骤完成的任务,是省时省力的好帮手。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/37453.html

下表展示窗口函数和聚合函数联系和区别,帮助更好理解两类函数的作用及运用:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/37453.html

(窗口函数是对聚合函数更高级的使用,所有将聚合函数放前面展示了)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/37453.html

MySQL窗口函数代码应用示例及解说

2、各窗口函数运用示例文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/37453.html

2.1 sum()over()函数(比对聚合函数sum()函数):文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/37453.html

(avg()、max()、min()函数同理)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/37453.html

MySQL窗口函数代码应用示例及解说

2.2 order by 子句作用文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/37453.html

MySQL窗口函数代码应用示例及解说

2.3 rank()、dense_rank()、row_number()排序函数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/37453.html

① row_number() over(order by Sales desc) ----按照Sales降序排序号,不重不漏,1 2 3 4 5;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/37453.html

② rank() over(order by Sales desc) ----按照Sales降序排序号,并列第一无第二,1 1 3 4 5;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/37453.html

③ dense_rank() over(order by Sales desc) ----按照Sales降序排序号,并列第一有第二,1 1 2 3 3 4;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/37453.html

④ percent_rank() over(order by Sales desc) ----按照Sales降序排序号,计算公式为(①的排序号)/(N-1)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/37453.html

MySQL窗口函数代码应用示例及解说

2.4 偏移 lead()向前移动、lag()向后移动文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/37453.html

MySQL窗口函数代码应用示例及解说

以下写法较符合使用习惯,上面列的顺序主要是为方便后面解说用,注意前期写代码注意养成好的习惯(代码带说明、下一列逗号放前面醒目等等)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/37453.html

MySQL窗口函数代码应用示例及解说

偏移多用于时间向前或向后,计算留存、最近两次消费时间间隔等,本文示例数据中没有日期,所以暂且用销量数据一用,想要理解透彻,还需多动手对比代码运行结果才好。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/37453.html

2.5 ntile()函数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/37453.html

MySQL窗口函数代码应用示例及解说

2.6 first_value() 函数和 last_value()函数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/37453.html

顾名思义:第一个值和最后一个值,多数结合 partition by 子句和 order by 子句文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/37453.html

先通过partition by 分组,order by排序,再获取组内最小值和最大值,示例如:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/37453.html

MySQL窗口函数代码应用示例及解说
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/37453.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/sjk/37453.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定