SQL Server ->> PERCENTILE_CONT、PERCENTILE_DISC 和 PERCENT_RANK 函數


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)

PERCENTILE_DISC (Transact-SQL)

PERCENT_RANK (Transact-SQL)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM