CUME_DIST (Transact-SQL)
適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance 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
ではクエリ結果セットのすべての行を 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)