我想分別得到 A 組和 B 組的總和,然后除以總和。
我試著用這個:
select name, sum(qt)
from ntbl
group by name
| order_id | 姓名 | qt |
|---|---|---|
| 1 | 一種 | 12 |
| 2 | 一種 | 20 |
| 3 | 乙 | 33 |
| 4 | 乙 | 45 |
結果應為:
| 姓名 | qt | DV |
|---|---|---|
| 一種 | 32 | 0.29 |
| 乙 | 78 | 0.70 |
uj5u.com熱心網友回復:
您可以將聚合函式和視窗函陣列合在一起:
select name
, sum(qt) as sum_qt
, sum(qt) / sum(sum(qt)) over () * 100 as pct_qt
from t
group by name
uj5u.com熱心網友回復:
您可以交叉加入另一個匯總所有數量的子查詢
CREATE TABLE ntbl ( `order_id` INTEGER, `name` VARCHAR(1), `qt` INTEGER ); INSERT INTO ntbl (`order_id`, `name`, `qt`) VALUES ('1', 'A', '12'), ('2', 'A', '20'), ('3', 'B', '33'), ('4', 'B', '45');
SELECT name, sum_name, ROUND(sum_name/sum_qt,2) as dv FROM (select name,SUM(qt) sum_name from ntbl group by name) q1 CROSS JOIN (SELECT SUM(`qt`) sum_qt FROM ntbl) q2姓名 | sum_name | DV :--- | --------: | ---: 一個 | 32 | 0.29 乙| 78 | 0.71
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/445196.html
