[英]Calculate the share of a certain criteria of the total per month
CREATE TABLE sales (
id int auto_increment primary key,
country VARCHAR(255),
sales_date DATE,
sales_volume INT
);
INSERT INTO sales
(country, sales_date, sales_volume
)
VALUES
("DE", "2020-01-03", "500"),
("DE", "2020-02-15", "700"),
("DE", "2020-03-27", "180"),
("NL", "2020-01-29", "320"),
("NL", "2020-02-03", "420"),
("NL", "2020-03-20", "420"),
("FR", "2020-01-18", "350"),
("FR", "2020-02-10", "180"),
("FR", "2020-03-30", "970");
預期結果:
country YEAR(sales_date) MONTH(sales_date) SUM(sales_volume) sales_share
DE 2020 1 500 0.36
DE 2020 2 700 0.50
DE 2020 3 180 0.14
FR 2020 1 350 0.23
FR 2020 2 180 0.12
FR 2020 3 970 0.65
NL 2020 1 320 0.23
NL 2020 2 420 0.30
NL 2020 3 670 0.47
在上表中,我有不同的countries
和他們相應的sales
。
現在,我想計算每個國家/地區每月的sales_share
,正如您在預期結果中看到的那樣。
SELECT
country,
YEAR(sales_date),
MONTH(sales_date),
SUM(sales_volume)
FROM sales
GROUP BY 1,2,3;
如何修改我的查詢,以便將每個國家/地區的sum per country
除以每月total of all countries
/地區的總數以獲得sales_share
?
使用 window 函數:
SELECT country, YEAR(sales_date), MONTH(sales_date),
SUM(sales_volume),
SUM(sales_volume) / SUM(SUM(sales_volume)) OVER (PARTITION BY country) as ratio
FROM sales
GROUP BY 1,2,3;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.