CUME_DIST (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsMicrosoft Fabric 中的 SQL 分析终结点Microsoft Fabric 中的仓库

对于 SQL Server,此函数会计算某个值在某个值组内的累积分布。 换言之,CUME_DIST 计算某指定值在一组值中的相对位置。 假定采用升序,行 rCUME_DIST 的值定义为低于或等于行 r 的值的行数除以在分区或查询结果集中求出的行数。 CUME_DIST 类似于 PERCENT_RANK 函数。

Transact-SQL 语法约定

语法

CUME_DIST( )  
    OVER ( [ partition_by_clause ] order_by_clause )  

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

自变量

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)  

另请参阅

PERCENT_RANK (Transact-SQL)