CUME_DIST (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsMicrosoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウス

SQL Server について、値のグループ内の値の累積分布を計算します。 つまり、CUME_DIST は、値のグループにおける指定された値の相対位置を計算します。 行 r の値の CUME_DIST は行 r の値以下の値を持つ行数として定義されます。これは、パーティションまたはクエリ結果セットで評価された行数で割った値です。 CUME_DISTPERCENT_RANK 関数に似ています。

Transact-SQL 構文表記規則

構文

CUME_DIST( )  
    OVER ( [ partition_by_clause ] order_by_clause )  

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

OVER ( [ partition_by_clause ] order_by_clause)

partition_by_clause は、FROM 句の結果セットをパーティションに分割します。このパーティションに関数が適用されます。 partition_by_clause 引数を指定しない場合、CUME_DIST ではクエリ結果セットのすべての行を 1 つのグループとして扱います。 order_by_clause は、操作が実行される論理的順序を決定します。 CUME_DIST には order_by_clause が必要です。 CUME_DIST は、OVER 構文の <行または範囲句> を受け取りません。 詳細については、OVER 句 (Transact-SQL) に関する記事を参照してください。

戻り値の型

float(53)

解説

CUME_DIST は、0 より大きく 1 以下の値の範囲を返します。 同順位の値は常に、同じ累積分布の値に評価されます。 CUME_DIST は既定で NULL 値を含み、これらの値を最小限の値として扱います。

CUME_DIST は非決定的です。 詳細については、「 決定的関数と非決定的関数」を参照してください。

この例では、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)