[英]Percentage calculation from another column sql / presto
我有這張桌子
month_year shopid payment_method count
Jul-19 3lokpn99 CC 115
Jul-19 3lokpn99 PAYPALL 1
Jul-19 6jyhikmm CC 180
Jul-19 6jyhikmm PAYPALL 7
Aug-19 3lokpn99 CC 108
Aug-19 3lokpn99 PAYPALL 4
Aug-19 6jyhikmm CC 114
Aug-19 6jyhikmm PAYPALL 3
我正在尋找的是計算當月每種付款方式的百分比。 想要的結果是這樣的
month_year shopid payment_method count %
Jul-19 3lokpn99 CC 115 99.14
Jul-19 3lokpn99 PAYPALL 1 0.86
Jul-19 6jyhikmm CC 180 96.26
Jul-19 6jyhikmm PAYPALL 7 3.74
Aug-19 3lokpn99 CC 108 96.43
Aug-19 3lokpn99 PAYPALL 4 3.57
Aug-19 6jyhikmm CC 114 97.4
Aug-19 6jyhikmm PAYPALL 3 2.56
有不同的方法可能
Window 函數方法具有額外的優勢,即源數據只讀一次。
SELECT month_year, shopid, payment_method, count,
100e0 * count / sum(count) OVER (
PARTITION BY month_year, shopid
RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
AS "%"
FROM ...
(在 Presto 318 上測試)
請參閱 Presto Window Function 文檔https://trino.io/docs/current/functions/window.ZCD235FDC8B5261Z文檔
您可以通過查詢來實現此結果:
SELECT s.*, ROUND(s.count / ss.count_summed * 100,2) AS `%`
FROM stack s
JOIN (SELECT s.month_year, s.shopid, SUM(s.count) AS count_summed FROM stack s GROUP BY s.month_year, s.shopid) ss ON ss.month_year = s.month_year AND ss.shopid = s.shopid;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.