【发布时间】:2020-11-20 05:18:12
【问题描述】:
CREATE TABLE sales (
id int auto_increment primary key,
orderID VARCHAR(255),
sent_date DATE
);
INSERT INTO sales
(orderID, sent_date
)
VALUES
("Order_01", "2019-03-15"),
("Order_01", "2019-03-16"),
("Order_02", "2020-06-16"),
("Order_03", "2020-07-27"),
("Order_03", "2020-08-05"),
("Order_03", "2020-08-10");
预期结果:
sent_date COUNT(distinct orderID)
2019-03-15 1
2019-03-16 0
2020-06-16 1
2020-07-27 1
2020-08-05 1
2020-08-10 0
在上表中,我有相同的orders 和多个sent_dates。
现在,我想按每日统计每个month/year 的唯一 orderIDs。
因此,我正在寻找一个查询来检查每个 orderID 是否已经存在于以前的 sent_date 中,如果存在,则当前 sent_date 的值应该是 0。
我知道每月/每年唯一计数的最简单方法是这个查询:
SELECT
YEAR(sent_date),
MONTH(sent_date),
COUNT(distinct orderID)
FROM sales
GROUP BY 1,2;
但是,我需要将每个 sent_date 分别显示在一个列表中,正如您在预期结果中看到的那样。
尽管我需要每天查询数据,但我需要什么查询才能获得count unique?
【问题讨论】:
标签: mysql sql date count window-functions