计算一组值的中位数

自 Oracle 10g 以来的 MEDIAN 功能是一个易于使用的聚合功能:

SELECT MEDIAN(SAL)
FROM EMP

它返回值的中值

也适用于 DATETIME 值。

MEDIAN 的结果是通过首先排序行来计算的。使用 N 作为组中的行数,Oracle 使用公式 RN =(1 +(0.5 *(N-1))计算感兴趣的行数(RN)。聚合函数的最终结果通过线性计算行号 CRN = CEILING(RN) 和 FRN = FLOOR(RN) 的行之间的插值。

从 Oracle 9i 开始,你可以使用 PERCENTILE_CONT ,其工作方式与 MEDIAN 函数相同,百分位数值默认为 0.5

SELECT PERCENTILE_CONT(.5) WITHIN GROUP(order by SAL) 
FROM EMP