PERCENT_RANK (Transact-SQL)

SQL Server 2012 の行のグループ内の行の相対的な順位を計算します。 PERCENT_RANK を使用して、クエリ結果またはパーティション内の値の相対的な順位を評価します。 PERCENT_RANK は CUME_DIST 関数に似ています。

構文

PERCENT_RANK( )
    OVER ( [ partition_by_clause ] order_by_clause )

引数

  • OVER ( [ partition_by_clause ] order_by_clause**)**
    partition_by_clause は、FROM 句で生成された結果セットをパーティションに分割します。このパーティションに関数が適用されます。 指定しない場合、関数ではクエリ結果セットのすべての行を 1 つのグループとして扱います。 order_by_clause は、演算が実行される論理的順序を指定します。 order_by_clause は必須です。 OVER 構文の <行または範囲句> は、PERCENT_RANK 関数では指定できません。 詳細については、「OVER 句 (Transact-SQL)」を参照してください。

戻り値の型

float(53)

全般的な解説

PERCENT_RANK によって返される値の範囲は、0 より大きく、1 以下になります。 セットの最初の行では PERCENT_RANK は 0 です。 NULL 値は既定で含まれており、最小値として扱われます。

使用例

次の例では、CUME_DIST 関数を使用して、特定の部門の各従業員の給与を百分位数で計算します。 CUME_DIST 関数によって返される値は、同じ部門の現在の従業員の給与以下の従業員が部門に占める割合を表します。 PERCENT_RANK 関数は、部門内の従業員の給与のランクが部門に占める割合を計算します。 PARTITION BY 句を指定して、部門別に結果セットの行をパーティションに分割します。 OVER 句で指定した ORDER BY 句によって、各パーティション内の行の順序が決められます。 SELECT ステートメントの ORDER BY 句によって、結果セット全体で行の並べ替えが行われます。

USE AdventureWorks2012;
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)

関連項目

参照

CUME_DIST (Transact-SQL)