我正在尝试弄清楚如何在 SQL 中计算 GROUPS 中的 MEDIAN(即需要使用 NTILE() 函数来间接计算中位数)。
我在互联网上读到一些SQL服务器不支持MEDIAN函数,而有些则支持。
例如,我正在做类似的事情:
select
count(*) as total_count,
median(height) as median_height,
median(weight) as median_weight
from football_players
group by country_of_origin;
这段代码运行正确,但在读到某些 SQL 服务器不支持 MEDIAN 函数后,我怀疑我是否正确完成了所有操作。
顺便说一句,我正在使用 Netezza。
这是正确的吗?
SQL Server 还没有 MEDIAN 函数。
最接近的函数是 PERCENTILE 函数,可获取第 50 个百分位数。
例如:
select
country_of_origin,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY ph.Rate)
OVER (PARTITION BY country_of_origin) AS MedianCont,
PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY ph.Rate)
OVER (PARTITION BY country_of_origin) AS MedianDisc
from football_players;
PERCENTILE_CONT
基于连续数进行计算,就像 PERCENTILE_DISC
基于离散数进行计算。