分析函数_PERCENT_RANK -- SQL Server 2012 & Hive

本文详细介绍了SQL Server 2012中PERCENT_RANK()函数的应用,包括其计算方式及如何结合RANK()函数使用。此外还展示了如何通过分区进行更细致的数据分析。
刚才已经介绍了 CUME_DIST 在 SQL Server 2012 (Hive)中的应用。因为在 Hive 中的语法跟 Server2012 中相同,所以我这里就不过多叙述 Hive 中使用的细节了。
PERCENT_RANK() 函数会返回当前查询结果集和分区的一个相对值。如果你希望进一步了解该函数,可以参考: https://en.wikipedia.org/wiki/Percentile
它的计算方式如下:(分组内当前行的 Rank 值-1) / (分组内总行数 - 1)  
                                                                    

USE AdventureWorks
GO
SELECT SalesOrderID, OrderQty,
RANK() OVER(ORDER BY SalesOrderID) Rnk,
PERCENT_RANK() OVER(ORDER BY SalesOrderID) AS PctDist
FROM Sales.SalesOrderDetail
WHERE SalesOrderID IN (43670, 43669, 43667, 43663)
ORDER BY PctDist DESC
GO

执行上述查询后,返回以下结果:

percentrank SQL SERVER   Introduction to PERCENT RANK()   Analytic Functions Introduced in SQL Server 2012

从上述可与看到,对PERCENT_RANK()函数的查询中也包含了 Rank() 函数,之所以这样写,是希望通过 Rank 函数来反应PERCENT_RANK()函数具体功能。


接下来让我们在查询中加入分区,查询代码如下:

USE AdventureWorks
GO
SELECT SalesOrderID, OrderQty, ProductID,
RANK() OVER(PARTITION BY SalesOrderID ORDER BY ProductID ) Rnk,
PERCENT_RANK() OVER(PARTITION BY SalesOrderID ORDER BY ProductID ) AS PctDist
FROM Sales.SalesOrderDetail s
WHERE SalesOrderID IN (43670, 43669, 43667, 43663)
--ORDER BY PctDist DESC
GO

如下图所示,我们会发现 PERCENT_RANK() 函数其实就是对具有相同 Order By 字段在其所在的 Partition 组中出现的概率。


HiveSQL中,开窗函数是一种特殊的函数,用于在查询结果中添加一个新的窗口函数值列。开窗函数可以分为排序开窗函数和聚合开窗函数两类。常用的排序开窗函数包括row_number()和rank()等。这些排序函数在over()子句中的order by语句只起到窗口内部排序的作用。开窗函数的基本用法包括设置窗口的方法,例如使用window_name、partition by和order by子句来指定窗口的大小和排序方式。另外,开窗函数还可以用于计算序号函数和分布函数。序号函数包括row_number()、rank()和dense_rank()等,用于计算每个行的序号。分布函数包括percent_rank()和cume_dist()等,用于计算某个值在整个结果集中的位置。此外,还有lag()和lead()函数用于获取前后指定行的值,以及first_value()和last_value()函数用于获取窗口内的第一个和最后一个值。在HiveSQL中,开窗函数可以与聚合函数结合使用,以便进行更复杂的计算和分析<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [hive sql常用开窗函数](https://blog.youkuaiyun.com/a822631129/article/details/124672228)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [hiveSQL开窗函数详解](https://blog.youkuaiyun.com/weixin_62759952/article/details/129269434)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值