PERCENTILE_DISC (Transact-SQL)PERCENTILE_DISC (Transact-SQL)

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse

SQL ServerSQL Server の行セット全体または行セットの別個のパーティション内で並べ替えられた値の特定の百分位数を計算します。Computes a specific percentile for sorted values in an entire rowset or within a rowset's distinct partitions in SQL ServerSQL Server. 百分位数が P の場合、PERCENTILE_DISC は ORDER BY 句で式の値を並べ替えます。For a given percentile value P, PERCENTILE_DISC sorts the expression values in the ORDER BY clause. 次に、指定された CUME_DIST 値が最小となる P 以上の値を返します (並べ替え仕様は同じ)。たとえば、PERCENTILE_DISC (0.5) は式の 50 番目の百分位数 (つまり、中央値) を計算します。It then returns the value with the smallest CUME_DIST value given (with respect to the same sort specification) that is greater than or equal to P. For example, PERCENTILE_DISC (0.5) will compute the 50th percentile (that is, the median) of an expression. PERCENTILE_DISC は、列値の離散型分布に基づく百分位数を計算します。PERCENTILE_DISC calculates the percentile based on a discrete distribution of the column values. 結果は列の特定の値と等しくなります。The result is equal to a specific column value.

記事のリンク アイコン Transact-SQL 構文表記規則 (Transact-SQL)Article link icon Transact-SQL Syntax Conventions (Transact-SQL)

構文Syntax

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

注意

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

引数Arguments

literalliteral
計算する百分位数です。The percentile to compute. 値は 0.0 ~ 1.0 で指定してください。The value must range between 0.0 and 1.0.

WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC)**WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC)**
並べ替える値のリストを指定し、百分位数を計算します。Specifies a list of values to sort and compute the percentile over. order_by_expression は 1 つだけ許可されます。Only one order_by_expression is allowed. 既定の並べ替え順は昇順です。The default sort order is ascending. 値のリストは、並べ替え操作に対して有効な任意のデータ型を指定できます。The list of values can be of any of the data types that are valid for the sort operation.

OVER ( <partition_by_clause>)**OVER ( <partition_by_clause>)**
FROM 句の結果セットをパーティションに分割します。Divides the FROM clause's result set into partitions. 百分位関数がこれらのパーティションに適用されます。The percentile function is applied to these partitions. 詳細については、を参照してください。 OVER 句 (Transact-SQL).For more information, see OVER Clause (Transact-SQL). <ORDER BY clause> と <rows or range clause> は PERCENTILE_DISC 関数に指定できません。The <ORDER BY clause> and <rows or range clause>can't be specified in a PERCENTILE_DISC function.

戻り値の型Return Types

戻り値の型は order_by_expression の型によって決まります。The return type is determined by the order_by_expression type.

互換性サポートCompatibility Support

互換性レベル 110 以上では、WITHIN GROUP は予約されたキーワードです。Under compatibility level 110 and higher, WITHIN GROUP is a reserved keyword. 詳細については、「ALTER DATABASE 互換性レベル (Transact-SQL)」を参照してください。For more information, see ALTER DATABASE Compatibility Level (Transact-SQL).

全般的な解説General Remarks

データセット内の NULL はすべて無視されます。Any nulls in the data set are ignored.

PERCENTILE_DISC は非決定的です。PERCENTILE_DISC is nondeterministic. 詳細については、「 決定的関数と非決定的関数」を参照してください。For more information, see Deterministic and Nondeterministic Functions.

Examples

基本構文例Basic syntax example

次の例では、PERCENTILE_CONT と PERCENTILE_DISC を使用して、各部門の従業員給与の中央値を検索します。The following example uses PERCENTILE_CONT and PERCENTILE_DISC to find each department's median employee salary. これらは同じ値を返さない可能性があります。They may not return the same value:

  • PERCENTILE_CONT は、データ セットに存在しない場合でも適切な値を返します。PERCENTILE_CONT returns the appropriate value, even if it doesn't exist in the data set.
  • PERCENTILE_DISC は、実際の設定値を返します。PERCENTILE_DISC returns an actual set value.
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;  

次に結果セットの一部を示します。Here is a partial result set.

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

例: Azure Synapse AnalyticsAzure Synapse AnalyticsParallel Data WarehouseParallel Data WarehouseExamples: Azure Synapse AnalyticsAzure Synapse Analytics and Parallel Data WarehouseParallel Data Warehouse

基本構文例Basic syntax example

次の例では、PERCENTILE_CONT と PERCENTILE_DISC を使用して、各部門の従業員給与の中央値を検索します。The following example uses PERCENTILE_CONT and PERCENTILE_DISC to find each department's median employee salary. これらは同じ値を返さない可能性があります。They may not return the same value:

  • PERCENTILE_CONT は、データ セットに存在しない場合でも適切な値を返します。PERCENTILE_CONT returns the appropriate value, even if it doesn't exist in the data set.
  • PERCENTILE_DISC は、実際の設定値を返します。PERCENTILE_DISC returns an actual set value.
-- Uses AdventureWorks  
  
SELECT DISTINCT DepartmentName  
       ,PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY BaseRate)  
        OVER (PARTITION BY DepartmentName) AS MedianCont  
       ,PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY BaseRate)  
        OVER (PARTITION BY DepartmentName) AS MedianDisc  
FROM dbo.DimEmployee;  
  

次に結果セットの一部を示します。Here is a partial result set.

DepartmentName        MedianCont    MedianDisc  
--------------------   ----------   ----------  
Document Control       16.826900    16.8269  
Engineering            34.375000    32.6923  
Human Resources        17.427850    16.5865  
Shipping and Receiving  9.250000     9.0000

参照See Also

PERCENTILE_CONT (Transact-SQL)PERCENTILE_CONT (Transact-SQL)