开窗函数及其作用、范式 目录 开窗函数的解释 开窗函数语法格式 开窗函数的类型 排序开窗 row_nuber() over() 范例1:全部排序 范例2:组内排序 rank() over() 范例 dense_rank() over() 排序开窗总结 聚合开窗 范例1:组内平均 范例2:前一个人和自己的平均 范例3:sum累加值 范例4:计算近月份的移动平均值 偏移开窗 范式 切片开窗 范例 计算百分比 开窗函数 又叫做窗口函数或是分析函数 开窗函数的解释 –函数出现位置 开窗函数,出现在select子句中 –窗口划分 对于FROM表中的数据集根据partition by 后的关键字进行划分窗口,这也就是窗口的来源 如若over内的partition by 关键字省略 则整个数据集看作一个窗口 各个窗口内的数据相互独立 互不干涉 而在over前面函数是在窗口划分之后针对窗口内的数据进行计算 rows control 子句中是用来控制窗口的大小 需要声明一点: 在实际计算的过程中是以行为单位进行计算的, 而正在计算的行视为当前行 窗口划分图示
窗口内计算图示
窗口大小控制 在控制窗口大小的过程中,不会超过每个窗口的界限,也就是说不会进入别的窗口,只会在自己的窗口内进行计算
开窗函数语法格式 开窗函数的类型 排序开窗 row_nuber() over() 作用:对数据进行排序并施加序号 不会重复排名 范例1:全部排序 范例2:组内排序 rank() over() 作用:对数据进行排序并施加序号 重复数据会并列排名 并跳过排名 范例 dense_rank() over() 作用:对数据进行排序并施加序号 重复数据会并列排名 不会跳过排名 排序开窗总结 1. 三种排序都可以全部排序也都可以组内排序, 主要看需求 2. 三种排序的区别 row_number()不重复排名123rank()重复且跳过113dense_rank()重复不跳过112 聚合开窗 作用: 对窗口内的数据进行聚合分析 范例1:组内平均 范例2:前一个人和自己的平均 ps:需要注意的是, 在窗口内计算时,是根据窗口内真实的数据行数进行计算的; 例如在这里第一条数据在计算时只有自己前面没有数据 那么就是自己和自己求平均 平均值计算公式 sum(字段) / count(字段) 范例3:sum累加值 常用于对每个月的销售额数据进行累加, 并将累加的数据于年目标进行除法,来计算年任务完成率 但由于此处的数据不合适,无奈之下只能对工资进行累加,读者领会语法和用途即可 范例4:计算近月份的移动平均值 聚合平均开窗可以和rows control一起使用,用来求移动平均值 偏移开窗 作用: 可以让多行之间的数据变成同一行进行计算 一般用于计算每个月数据的同比环比率 lead 列向上偏移 lag 列向后偏移 语法格式 范式 切片开窗 作用: 一般用于计算排名百分比 如果不分窗口 就将全部数据根据字段划分为指定的片数 如果分窗口 就在窗口内划分为指定的片数 例如划分为4片 每个片内都会相应的赋予片编号1 2 3 4 这样1号片内的数据就是前百分之25 范例 计算百分比 注意: 当记录条数与切片数相除结果不是整数时, 会先按整数划分 余下的数据在进行循环划分,并且每次只给一个值,让数据条数的误差始终保持在1条数据
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/85938.html