这能给我一个sql的中位数吗

7eumitmz  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(302)

这能给我每个公司的中位数吗?

SELECT a.id,a.company_name,a.salary
FROM (SELECT id,company_name,Salary,PERCENT_RANK OVER() (PARTITION BY company ORDER BY Salary) AS 'percentile') a
WHERE percentile = 0.5
GROUP BY a.id,a.company_name
bkhjykvo

bkhjykvo1#

不一定。问题是 percent_rank() 返回浮点数。而浮点比较是相当危险的——因为浮点是模糊的。
为什么不用呢 percentile_cont() ?

select distinct a.company_name,
       percentile_cont(0.5) within group (order by salary) over (partition by a.company_name) as median
from a;

我敢肯定任何支持 percent_rank() 还支持 percentile_cont() 以及 percentile_disc() ,尽管确切的语法可能因数据库而异。

相关问题