Share via


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。 此運算式求得的解必須是精確數值類型 (int、bigint、smallint、tinyint、numeric、bit、decimal、smallmoney、money) 或近似數值類型 (float、real)。 不允許其他資料類型。 預設排序順序為遞增。

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

傳回類型

float(53)

相容性支援

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

一般備註

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

範例

A.基本語法範例

下列範例會使用 PERCENTILE_CONT 及 PERCENTILE_DISC 尋找各部門員工的薪資中間值。 請注意,這些函數可能不會傳回相同的值。 這是因為資料集中無論有無 PERCENTILE_CONT,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_DISC (Transact-SQL)