CREATE TABLE sales (
id int auto_increment primary key,
customerID VARCHAR(255),
sales_date DATE,
sales_volume INT,
annual_unqiue_count INT
);
INSERT INTO sales
(customerID, sales_date, sales_volume, annual_unqiue_count)
VALUES
("Customer_01", "2020-03-01", "600", "1"),
("Customer_01", "2020-03-25", "315", "0"),
("Customer_02", "2020-03-18", "208", "1"),
("Customer_02", "2020-07-25", "140", "0"),
("Customer_03", "2020-10-18", "400", "1"),
("Customer_03", "2020-12-06", "500", "0"),
("Customer_03", "2020-12-18", "438", "0"),
("Customer_03", "2020-12-25", "917", "0");
Expected Result:
customerID sales_date SUM(annual_unqiue_count) SUM(sales_volume) sales_volume
Customer_01 3 1 600 915
Customer_01 3 0 315 0
Customer_02 3 1 208 348
Customer_02 7 0 140 0
Customer_03 10 1 400 2255
Customer_03 12 0 500 0
Customer_03 12 0 438 0
Customer_03 12 0 917 0
In the result I want to assign the SUM(sales_volume) per customer to the month of the sales_date which has an annual_unqiue_count <> 0. (Note: Only one row per customer can have an annual_unique_account <> 0)
Referring to the solution from this question I tried to go with:
SELECT
customerID,
MONTH(sales_date),
SUM(annual_unqiue_count),
SUM(sales_volume),
(CASE WHEN annual_unqiue_count <> 0
THEN SUM(sales_volume) over (PARTITION BY customerId)
ELSE 0 END) AS sales_volume
FROM sales
GROUP BY 1,2;
However, it does not give me the correct result.
Do you have any idea what I need to change?