BI-SQL丨开窗函数(一)
开窗函数(一) 开窗函数在SQL语句中属于一种特殊的用法。开窗函数的引入,是为了既可以显示聚集前的数据,也要显示聚集后的数据。 而在SQL中,开窗函数又分类两类,一类是排序函数,一类是聚合函数。 语法 开窗函数:如果这里我们使用的是排序函数,那么输入Rank()这类;如果这里我们选择的是聚合函数,那么输入Sum(列)这类。 注:用于分组的列,可以进行省略,类似于CALCULATE中ALL(‘表’)的效果。 本期我们主要介绍的是排序函数:rank、dense_rank、row_number、ntile。 使用实例 案例数据:
在白茶本机的数据库中存在名为“CaseData”的数据库。”Dim_Product”产品表。 例子1:使用Rank函数,对Product进行排序,排序依据为Price,按照ProductGroup进行分组。
结果如下:
从结果上我们可以看出,Rank函数是国际的通用排名,结果允许出现并列排名,不保留被占用的排序位数。 例如:1、2、3、3、5。其中4因为并列排名的原因,排序位数不保留。 例子2:使用Dense_Rank函数,对Product进行排序,排序依据为Price,按照ProductGroup进行分组。
结果如下:
从结果上我们可以看出,Dense_Rank函数是中国式排名,结果允许出现并列排名,保留被占用的排序位数。 例如:1、2、3、3、4。其中,4的排序位数顺延保留。 例子3:使用Row_Number函数,对Product进行排序,排序依据为Price,按照ProductGroup进行分组。
结果如下:
从结果上我们可以看出,Row_Number函数不允许出现并列排名。 例如:1、2、3、4、5。 例子4:使用Ntile函数,对Product进行排序,排序依据为Price,按照ProductGroup进行分组,组内分为4组。
结果如下:
从结果上我们可以看出,Ntile函数会按照我们输入的参数,进行内置分组。 当组内数量小于参数时,那么返回结果就是对应的排名。 当组内数量大于参数时,那么返回结果为组内数量除以参数。总结一下:Rank函数是标准的排名,允许出现并列排名,例:1,1,3。Dense_Rank是中国式排名,允许出现并列,例:1,1,2。Row_Number不允许出现并列排名,例:1,2,3。Ntile是分区函数,比如10行数据分四个区,例:1,1,2,2,3,3,4,4。
这里是白茶,一个PowerBI的初学者。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/54410.html