下面的查询将返回“中位数”为310,但实际中值为365,我在PERCENTILE_DISC中遇到了问题。它返回310,因为它包含空值。
有办法让PERCENTILE_DISC排除NULLS吗?Gordon在这个帖子中提到,NULL被排除在PERCENTILE_DISC之外,但情况似乎并非如此。
下面是一个简单的例子,展示了这个问题:
SELECT
DISTINCT PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY Numbers) OVER (PARTITION BY Category)
from
(
select 1 as Category,420 as Numbers
union all
select 1,425
union all
select 1,NULL
union all
select 1,310
union all
select 1,300
) t1发布于 2021-10-12 06:07:47
根据盘片,结果总是等于特定的列值。
PERCENTILE_DISC确实忽略了NULL :如果您请求PERCENTILE_DISC(0),您将得到300,而不是NULL。
要获得所需的值(365,即310到420之间的平均值),您需要使用PERCENTILE_CONT。参见上面提到的文档中的第一个示例,其中突出了PERCENTILE_CONT和PERCENTILE_DISC之间的区别。
https://stackoverflow.com/questions/69535362
复制相似问题