我在使用 PERCENTILE_DISC 時遇到問題,其中以下查詢將“中位數”回傳為 310,但實際中位數為 365。它回傳 310,因為它包括 NULL 值。
有沒有辦法讓 PERCENTILE_DISC 排除 NULLS?Gordon Lindoff 在這篇文章中提到,從 PERCENTILE_DISC 中排除了 NULL,但情況似乎并非如此。
這是顯示問題的簡單示例:
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
uj5u.com熱心網友回復:
根據PERCENTILE_DISC的檔案,結果總是等于特定的列值。
PERCENTILE_DISC 確實會忽略 NULL-s:如果您要求 PERCENTILE_DISC(0),您將得到 300,而不是 NULL。
要獲得您想要的值(365,即 310 和 420 之間的平均值),您需要使用PERCENTILE_CONT. 請參閱上述檔案中的第一個示例,其中突出顯示了 PERCENTILE_CONT 和 PERCENTILE_DISC 之間的區別。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/311518.html
標籤:sql sql-server 查询语句 sql-server-2017
下一篇:這個SQL陳述句的意圖是什么?
