PERCENTILE_CONT和PERCENTILE_DISC都是為了計算百分位的數值,比如計算在某個百分位時某個欄位的數值是多少。他們的區別就是前者是連續型,后者是離散型。CONT代表continuous,DISC代表discrete。PERCENTILE_CONT是連續型意味它考慮的是區間,所以值是絕對的中間值。而PERCENTILE_DISC是離散型,所以它更多考慮向上或者向下取舍,而不會考慮區間。下面是MSDN的一個例子:
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;
PERCENT_RANK雖然也帶有PERCENT,但是和前兩個沒有什么關系。它是為了計算當前值按百分比計算所處在百分位位置。
參考:
PERCENTILE_CONT (Transact-SQL)
