MYSQL查询以获取最近30天的每日数据计数,即使任何日期都不存在数据

时间:2018-10-20 11:34:47

标签: php mysql

我有一张桌子:“订单”(order_id,order_processed_date)。我希望最近30天每天的订单数。如果任何日期有0个订单,则应打印0。

类似这样的东西:

total  | date
1      | 2018-10-20
0      | 2018-10-19
0      | 2018-10-18
0      | 2018-10-17
2      | 2018-10-16
0      | 2018-10-15
1      | 2018-10-14
0      | 2018-10-13
0      | 2018-10-12
1      | 2018-10-11
1      | 2018-10-10
5      | 2018-10-09
1      | 2018-10-08

,依此类推,直到2018-09-20。我已经在stackoverflow中进行了搜索,并得到了一些查询,但没有找到确切的解决方案。我使用下面的查询得到结果,但它只记录日期不为0的订单:

SELECT COUNT(order_id) AS total, DATE(order_processed_date) AS date
FROM orders 
WHERE order_processed_date BETWEEN '2018-09-20' AND '2018-10-20'
GROUP BY DATE(order_processed_date)
ORDER BY order_processed_date DESC

能否请我帮忙给我结果。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用日历表,其中一个示例为described here。基本上,这是一个按日期排序的表格(如果需要,可以添加更多属性)。

您可以使用日历表LEFT JOIN orders,然后使用GROUP BY来获取结果,例如每月。

好运。