簡體   English   中英

計算某個標准在每個月的總數中所占的份額

[英]Calculate the share of a certain criteria of the total per month

DB-小提琴

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.

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