我有一张orders桌。假设它只有2列,id和created_at。
想象一下,我的orders表中有一个数据如下所示:
id | created_at
01 | 2018-09-29
02 | 2018-09-29
03 | 2018-09-30我想在那一天内选择所有订单。
我可以使用以下查询来选择记录。
SELECT created_at AS date, COUNT(id) AS result
FROM orders
GROUP BY created_at
ORDER BY date这将返回:
date | result
2018-09-29 | 2
2018-09-30 | 1我希望展开上面的查询,以生成以下结果:(daterange)
date | result
2018-09-15 | 0
2018-09-16 | 0
...
2018-09-29 | 2
2018-09-30 | 1这个是可能的吗?若要选择不存在的数据以生成日期范围报告,请执行以下操作?
发布于 2018-09-29 03:11:22
你想要的结果一定是这样的:
date | result
2018-09-01 | 0
2018-09-02 | 0
2018-09-03 | 0
2018-09-04 | 0
....
2018-09-28 | 0
2018-09-29 | 2
2018-09-28 | 1您需要为天数创建一个表或临时表。
id
1
2
3
4
...
28
29
30
31并尝试查询以下内容:
SELECT
DATE((select CONCAT(YEAR(CURDATE()), '-', MONTH(CURDATE()),'-' ,day))) as Date1,
COUNT(o.order_id)
as counting from orders as o
right join numberofdays d
on d.day = DAY(o.created_at)
GROUP BY Date1
ORDER BY Date1我使用了正确的连接:

希望这能帮上忙。谢谢。
https://dba.stackexchange.com/questions/218860
复制相似问题