CUME_DIST (Transact-SQL)
适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Microsoft Fabric 中的 SQL 分析终结点 Microsoft Fabric 中的仓库
对于 SQL Server,此函数会计算某个值在某个值组内的累积分布。 换言之,CUME_DIST
计算某指定值在一组值中的相对位置。 假定采用升序,行 r 中 CUME_DIST
的值定义为低于或等于行 r 的值的行数除以在分区或查询结果集中求出的行数。 CUME_DIST
类似于 PERCENT_RANK
函数。
语法
CUME_DIST( )
OVER ( [ partition_by_clause ] order_by_clause )
参数
OVER ( [ partition_by_clause ] order_by_clause)
partition_by_clause 将 FROM 子句结果集划分为要应用函数的分区。 如果未指定 partition_by_clause 参数,则 CUME_DIST
将查询结果集的所有行视为单个组。 order_by_clause 确定操作发生的逻辑顺序。 CUME_DIST
需要 order_by_clause。 CUME_DIST
将不接受 OVER 语法的 <行或 range 子句>。 有关详细信息,请参阅 OVER 子句 (Transact-SQL)。
返回类型
float(53)
备注
CUME_DIST
返回一系列大于 0 且小于或等于 1 的值。 关联值始终计算为相同的累积分布值。 CUME_DIST
默认包含 NULL 值,且将这些值视为最低的可能值。
CUME_DIST
具有不确定性。 有关详细信息,请参阅 Deterministic and Nondeterministic Functions。
示例
此示例使用 CUME_DIST
函数计算给定部门内每个雇员的薪金百分比。 CUME_DIST
返回表示薪金低于或等于同一个部门中当前雇员的雇员百分比的值。 PERCENT_RANK
函数计算雇员的薪金在部门内的百分比排名。 为按部门对结果集行进行分区,示例会指定 partition_by_clause 值。 OVER 子句中的 ORDER BY 子句在逻辑上对每个分区中的行进行排序。 SELECT 语句中的 ORDER BY 子句确定结果集的显示顺序。
USE AdventureWorks2022;
GO
SELECT Department, LastName, Rate,
CUME_DIST () OVER (PARTITION BY Department ORDER BY Rate) AS CumeDist,
PERCENT_RANK() OVER (PARTITION BY Department ORDER BY Rate ) AS PctRank
FROM HumanResources.vEmployeeDepartmentHistory AS edh
INNER JOIN HumanResources.EmployeePayHistory AS e
ON e.BusinessEntityID = edh.BusinessEntityID
WHERE Department IN (N'Information Services',N'Document Control')
ORDER BY Department, Rate DESC;
结果集如下。
Department LastName Rate CumeDist PctRank
---------------------- ---------------------- --------------------- ---------------------- ----------------------
Document Control Arifin 17.7885 1 1
Document Control Norred 16.8269 0.8 0.5
Document Control Kharatishvili 16.8269 0.8 0.5
Document Control Chai 10.25 0.4 0
Document Control Berge 10.25 0.4 0
Information Services Trenary 50.4808 1 1
Information Services Conroy 39.6635 0.9 0.888888888888889
Information Services Ajenstat 38.4615 0.8 0.666666666666667
Information Services Wilson 38.4615 0.8 0.666666666666667
Information Services Sharma 32.4519 0.6 0.444444444444444
Information Services Connelly 32.4519 0.6 0.444444444444444
Information Services Berg 27.4038 0.4 0
Information Services Meyyappan 27.4038 0.4 0
Information Services Bacon 27.4038 0.4 0
Information Services Bueno 27.4038 0.4 0
(15 row(s) affected)