计算一组值的中位数
自 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