我有表:“订单”(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
可以请有人帮我给我我需要的结果。
最佳答案
您可以尝试使用日历表,例如described here。 .基本上,这是一个包含有序日期列表的表格(如果您愿意,还可以添加额外的属性)。
您可以使用日历表来LEFT JOIN
您的订单
,并使用GROUP BY
来获取结果,例如每月。
祝你好运。
关于php - 用于获取最近 30 天的每日数据的 MYSQL 查询计数,即使任何日期的数据都不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52905206/