美文网首页BI学习笔记
BI-SQL丨开窗函数(一)

BI-SQL丨开窗函数(一)

作者: Fabric丨白茶 | 来源:发表于2022-03-25 18:11 被阅读0次

开窗函数(一)

开窗函数在SQL语句中属于一种特殊的用法。开窗函数的引入,是为了既可以显示聚集前的数据,也要显示聚集后的数据。

而在SQL中,开窗函数又分类两类,一类是排序函数,一类是聚合函数。

语法

<开窗函数> over (partition by <用于分组的列> order by <用于排序的列>)

开窗函数:如果这里我们使用的是排序函数,那么输入Rank()这类;如果这里我们选择的是聚合函数,那么输入Sum(列)这类。

注:用于分组的列,可以进行省略,类似于CALCULATE中ALL('表')的效果。

本期我们主要介绍的是排序函数:rank、dense_rank、row_number、ntile。

使用实例

案例数据:

在白茶本机的数据库中存在名为“CaseData”的数据库。"Dim_Product"产品表。

例子1:使用Rank函数,对Product进行排序,排序依据为Price,按照ProductGroup进行分组。

SELECT *,RANK() OVER (PARTITION BY ProductGroup ORDER BY price) AS Rankx
FROM Dim_Product

结果如下:

从结果上我们可以看出,Rank函数是国际的通用排名,结果允许出现并列排名,不保留被占用的排序位数。

例如:1、2、3、3、5。其中4因为并列排名的原因,排序位数不保留。

例子2:使用Dense_Rank函数,对Product进行排序,排序依据为Price,按照ProductGroup进行分组。

SELECT *,Dense_Rank() OVER (PARTITION BY ProductGroup ORDER BY price) AS Rankx
FROM Dim_Product

结果如下:

从结果上我们可以看出,Dense_Rank函数是中国式排名,结果允许出现并列排名,保留被占用的排序位数。

例如:1、2、3、3、4。其中,4的排序位数顺延保留。

例子3:使用Row_Number函数,对Product进行排序,排序依据为Price,按照ProductGroup进行分组。

SELECT *,Row_Number() OVER (PARTITION BY ProductGroup ORDER BY price) AS Rankx
FROM Dim_Product

结果如下:

从结果上我们可以看出,Row_Number函数不允许出现并列排名。

例如:1、2、3、4、5。

例子4:使用Ntile函数,对Product进行排序,排序依据为Price,按照ProductGroup进行分组,组内分为4组。

SELECT *,Ntile(4) OVER (PARTITION BY ProductGroup ORDER BY price) AS Rankx
FROM Dim_Product

结果如下:

从结果上我们可以看出,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的初学者。


相关文章

  • BI-SQL丨开窗函数(一)

    开窗函数(一) 开窗函数在SQL语句中属于一种特殊的用法。开窗函数的引入,是为了既可以显示聚集前的数据,也要显示聚...

  • BI-SQL丨开窗函数(二)

    开窗函数(二) 之前的文章里,白茶曾经描述过关于开窗函数的内容,本期我们来继续这个话题。 通过之前的介绍,相信大家...

  • 开窗函数

    over在聚合函数中的使用:一般格式:聚合函数名(列) over(选项)over必须与聚合函数或排序函数一起使用...

  • 开窗函数

    印象笔记 1、开窗函数https://www.douban.com/group/topic/155112949/[...

  • 开窗函数

  • 开窗函数

    排序同一个年级中年纪的排序开窗操作:rank() over (partition by)有点想group by只不...

  • 开窗函数

    开窗函数定义 一组行被称为一个窗口,开窗函数是指可以用于「分区」或「分组」计算的函数。这些函数结合 OVER 子句...

  • Oracle分析函数用法详解

    OVER(PARTITION BY)开窗函数用法 开窗函数,Oracle从8.1.6开始提供开窗函数,开窗函数用于...

  • SQL总结-开窗函数

    一 . 开窗函数 分组函数 开窗函数 分组与开窗的区别分组函数每组只返回一行,而开窗函数每组返回多行。如下: 分组...

  • BI-SQL丨AND & OR & IN

    AND函数 & OR函数 & IN函数 AND函数、OR函数和IN函数都可以理解是WHERE函数的补充,当然也可以...

网友评论

    本文标题:BI-SQL丨开窗函数(一)

    本文链接:https://www.haomeiwen.com/subject/uupixrtx.html