簡體   English   中英

將每組的總和除以總計

[英]Divide the sum of each group by the grand total

我想分別得到 A 組和 B 組的總和,然后分別除以總和。

我試着用這個:

select name, sum(qt)
from ntbl
group by name 
order_id 名稱 qt
1個 一種 12
2個 一種 20
3個 33
4個 45

結果應該是:

名稱 qt 錄像機
一種 32 0.29
78 0.70

您可以將聚合函數和 window 函數組合在一起:

select name
     , sum(qt) as sum_qt
     , sum(qt) / sum(sum(qt)) over () * 100 as pct_qt
from t
group by name

您可以交叉連接另一個匯總所有數量的子查詢

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
 姓名 | 總和名稱 | 視頻:--- |  ------: |  ---:一個|  32 |  0.29 乙 |  78 |  0.71

db<> 在這里擺弄

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM