如何使用SQL或PL / SQL计算分位数95值?
使用SQL聚合或分析函数PERCENTILE_DISC()
(或者可能是PERCENTILE_CONT()
)。 Google为您的Oracle版本和函数名称查找这些函数的Oracle文档。
以下是我在HR.EMPLOYEES
表中找到第95百分位工资的方法(HR
是与许多Oracle数据库一起安装的标准HR模式):
select percentile_disc(0.95) within group (order by salary) as sal_95th_pctile
from hr.employees
;
SAL_95TH_PCTILE
---------------
13000
如果我想在每个部门找到第95百分位的薪水,我会使用分析版本:
select percentile_disc(0.95) within group (order by salary)
over (partition by department_id) as sal_95th_pctile
from hr.employees
;
对于HR.EMPLOYEES
表来说这没有多大意义,因为每个部门只有少数员工,所以“第95百分位数”毫无意义;但是,当所有“部门”都有很多值来计算第95个百分点时,你就会这样做。