PERCENTILE_CONT (Transact-SQL)
SQL Server 2012 の列値の連続型分散に基づく百分位数を計算します。 結果には値が挿入され、列内の特定の値と一致しない可能性があります。
Transact-SQL 構文表記規則 (Transact-SQL)
構文
PERCENTILE_CONT ( numeric_literal )
WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
OVER ( [ <partition_by_clause> ] )
引数
numeric_literal
計算する百分位数です。 値は 0.0 ~ 1.0 で指定してください。WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ])
並べ替える数値の一覧を指定し、百分位数を計算します。 許可される order_by_expression は 1 つだけです。 式は、真数型 (int、bigint、smallint、tinyint、numeric、bit、decimal、smallmoney、money) または概数型 (float、real) に評価される必要があります。 他のデータ型は許可されません。 既定の並べ替え順は昇順です。OVER ( <partition_by_clause> )
FROM 句で生成された結果セットをパーティションに分割します。このパーティションにパーセンタイル関数が適用されます。 詳細については、「OVER 句 (Transact-SQL)」を参照してください。 OVER 構文の <ORDER BY 句> と <行または範囲句> は PERCENTILE_CONT 関数では指定できません。
戻り値の型
float(53)
互換性サポート
互換性レベル 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