Share via


PERCENTILE_DISC (Transact-SQL)

SQL Server 2012 の行セット全体または行セットの別個のパーティション内で並べ替えられた値の特定の百分位数を計算します。 特定の百分位数 P の場合、PERCENTILE_DISC は ORDER BY 句で式の値を並べ替え、CUME_DIST 値が最小となる P 以上の値を返します (並べ替え仕様は同じ)。 たとえば、PERCENTILE_DISC (0.5) は式の 50 番目の百分位数 (つまり、中央値) を計算します。 PERCENTILE_DISC は、列値の離散型分布に基づく百分位数を計算します。結果は列の特定の値と等しくなります。

トピック リンク アイコン Transact-SQL 構文表記規則 (Transact-SQL)

構文

PERCENTILE_DISC ( numeric_literal ) WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
    OVER ( [ <partition_by_clause> ] )

引数

  • literal
    計算する百分位数です。 値は 0.0 ~ 1.0 で指定してください。

  • WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ])
    並べ替える数値の一覧を指定し、百分位数を計算します。 許可される order_by_expression は 1 つだけです。 既定の並べ替え順は昇順です。

  • OVER ( <partition_by_clause> )
    FROM 句で生成された結果セットをパーティションに分割します。このパーティションにパーセンタイル関数が適用されます。 詳細については、「OVER 句 (Transact-SQL)」を参照してください。 <ORDER BY 句> と <行または範囲句> は PERCENTILE_DISC 関数では指定できません。

戻り値の型

戻り値の型は order_by_expression 型によって決められます。

互換性サポート

互換性レベル 110 では、WITHIN GROUP は予約されたキーワードです。 詳細については、「ALTER DATABASE 互換性レベル (Transact-SQL)」を参照してください。

全般的な解説

データセット内の NULL はすべて無視されます。

使用例

A. 基本構文例

次の例では、PERCENTILE_CONT と PERCENTILE_DISC を使用して、各部門の従業員給与の中央値を検索します。 これらの関数は同じ値を返さない可能性があります。 これは、データセットに存在するかどうかに関係なく PERCENTILE_CONT では適切な値が挿入されるためですが、PERCENTILE_DISC では常にセットから実際の値を返します。

USE AdventureWorks2012;

SELECT DISTINCT Name AS DepartmentName
      ,PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY ph.Rate) 
                            OVER (PARTITION BY Name) AS MedianCont
      ,PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY ph.Rate) 
                            OVER (PARTITION BY Name) AS MedianDisc
FROM HumanResources.Department AS d
INNER JOIN HumanResources.EmployeeDepartmentHistory AS dh 
    ON dh.DepartmentID = d.DepartmentID
INNER JOIN HumanResources.EmployeePayHistory AS ph
    ON ph.BusinessEntityID = dh.BusinessEntityID
WHERE dh.EndDate IS NULL;

次に結果セットの一部を示します。

DepartmentName        MedianCont    MedianDisc

--------------------   ----------   ----------

Document Control       16.8269      16.8269

Engineering            34.375       32.6923

Executive              54.32695     48.5577

Human Resources        17.427850    16.5865

関連項目

参照

PERCENTILE_CONT (Transact-SQL)