在 SQL 中计算中位数

问题描述 投票:0回答:1

我正在尝试弄清楚如何在 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 netezza
1个回答
0
投票

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
基于离散数进行计算。

© www.soinside.com 2019 - 2024. All rights reserved.