PERCENTILE_CONT (Transact-SQL)

適用於:Microsoft Fabric 中 Microsoft Fabric倉儲中的 SQL ServerAzure SQL 資料庫 Azure SQL 受控執行個體 Azure SynapseAnalytics Analytics Platform System (PDW)SQL 分析端點

根據 SQL Server 中的資料行值連續分佈計算百分位數。 其結果會以內插值取代,可能不會等於資料行中的任何特定值。

Transact-SQL 語法慣例

Syntax

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

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

numeric_literal
要運算的百分位數。 值範圍必須介於 0.0 到 1.0 之間。

WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
指定要用以排序及計算百分位數的數值清單。 只允許一個 order_by_expression。 此運算式求得的解必須是精確數值類型或近似數值類型,不允許其他資料類型。 精確數值類型為 intbigintsmallinttinyintnumericbitdecimalsmallmoneymoney。 近似數值類型為 floatreal。 預設排序順序為遞增。

OVER (<partition_by_clause>)
將 FROM 子句所產生的結果集,分割成套用百分位數函數的分割區。 如需詳細資訊,請參閱 OVER 子句 (Transact-SQL)。 不可在 PERCENTILE_CONT 函式中指定 OVER 語法的 <ORDER BY 子句> 及 <資料列或範圍子句>。

傳回型別

float(53)

相容性支援

WITHIN GROUP 在相容性層級 110 及更高之下屬於保留的關鍵字。 如需詳細資訊,請參閱 ALTER DATABASE 相容性層級 (Transact-SQL)

一般備註

資料集中所有的 Null 皆會予以忽略。

PERCENTILE_CONT 不具決定性。 如需詳細資訊,請參閱 決定性與非決定性函數

範例

A. 基本語法範例

下列範例會使用 PERCENTILE_CONT 及 PERCENTILE_DISC 尋找各部門員工的薪資中間值。 這些函式可能不會傳回相同的值。 PERCENTILE_CONT 會插入適當值 (資料集中不一定會有該值),而 PERCENTILE_DISC 則一律會傳回資料集中的實際值。

USE AdventureWorks2022;  
  
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

B. 基本語法範例

下列範例會使用 PERCENTILE_CONT 及 PERCENTILE_DISC 尋找各部門員工的薪資中間值。 這些函式可能不會傳回相同的值。 PERCENTILE_CONT 會插入適當值 (資料集中不一定會有該值),而 PERCENTILE_DISC 則一律會傳回資料集中的實際值。

-- 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; 

以下為部分結果集。

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

另請參閱

PERCENTILE_DISC (Transact-SQL)