使用 PERCENTILE_CONT SQL 从十进制列中检索中位数
Retrieve the Median from a decimal column using PERCENTILE_CONT SQL
我有一个 table 价格像:
ID PurchasePriceCalc
0146301 0.002875161
00006L00 0.00396
00087G03 NULL
00001G04 0.0020004
00006S 0.003689818
01580h01 NULL
00082EE00 0.002462687
00038R05 0.002237565
01666R01 0.002666667
我想得到每个 PurchasePriceCalc 的中位数,然后用 PurchasePriceCalc 减去结果,为了更好地解释公式应该是:(PurchasePriceCalc - Median(PurchasePriceCalc))。
我正在使用下面的查询但无法正常工作:
SELECT ID,PurchasePriceCalc, PurchasePriceCalc - PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY PurchasePriceCalc)
OVER (PARTITION BY ID) AS MediaCalc FROM Prices
输出应该是这样的(黄色列)。
任何协助或帮助将不胜感激!
我想问题出在 OVER (PARTITION BY ID)
上。如果 ID 是唯一的,那么每组只包含一行,这就是为什么所有值都等于 0/NULL。
您应该删除 PARTITION BY
部分。
SELECT ID,PurchasePriceCalc,
PurchasePriceCalc - PERCENTILE_CONT(0.5)
WITHIN GROUP(ORDER BY PurchasePriceCalc) OVER () AS MediaCalc
FROM Prices;
我有一个 table 价格像:
ID PurchasePriceCalc
0146301 0.002875161
00006L00 0.00396
00087G03 NULL
00001G04 0.0020004
00006S 0.003689818
01580h01 NULL
00082EE00 0.002462687
00038R05 0.002237565
01666R01 0.002666667
我想得到每个 PurchasePriceCalc 的中位数,然后用 PurchasePriceCalc 减去结果,为了更好地解释公式应该是:(PurchasePriceCalc - Median(PurchasePriceCalc))。
我正在使用下面的查询但无法正常工作:
SELECT ID,PurchasePriceCalc, PurchasePriceCalc - PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY PurchasePriceCalc)
OVER (PARTITION BY ID) AS MediaCalc FROM Prices
输出应该是这样的(黄色列)。
任何协助或帮助将不胜感激!
我想问题出在 OVER (PARTITION BY ID)
上。如果 ID 是唯一的,那么每组只包含一行,这就是为什么所有值都等于 0/NULL。
您应该删除 PARTITION BY
部分。
SELECT ID,PurchasePriceCalc,
PurchasePriceCalc - PERCENTILE_CONT(0.5)
WITHIN GROUP(ORDER BY PurchasePriceCalc) OVER () AS MediaCalc
FROM Prices;