我正在生成mysql查询,以显示当月按天数分组收到的订单数量。
mysql的表结构如下:
order_id date
======== ==========
1234 2012-07-02
1235 2012-07-02
1236 2012-07-04
1237 2012-07-07
1238 2012-07-08现在,我希望它使用MySQL语句返回以下结果
count(order_id) day
=============== ===
0 01
2 02
0 03
1 04
0 05
0 06
1 07
1 08依此类推,直到30/31月底取决于月份中的日期。
期待您的建议和帮助。
谢谢。
发布于 2014-04-17 04:26:37
SELECT
count(order_id),
dates.dte
FROM
(
SELECT '2011-02-01' + INTERVAL a + b DAY dte
FROM
(SELECT 0 a UNION SELECT 1 a UNION SELECT 2 UNION SELECT 3
UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7
UNION SELECT 8 UNION SELECT 9 ) d,
(SELECT 0 b UNION SELECT 10 UNION SELECT 20
UNION SELECT 30 UNION SELECT 40) m
WHERE '2011-02-01' + INTERVAL a + b DAY < '2011-03-01'
ORDER BY a + b
) dates
LEFT JOIN
orders ON orders.`date` = dates.dte
GROUP BY
dates.dte
ORDER BY
dates.dte使用编程语言生成day列值
感谢用于nice answer here的@The Scrum Master
,但我也同意这不应该在数据库中完成。如果你仔细想想,你实际上不需要使用 0 count的行。
发布于 2014-04-17 13:09:48
准备包含月和日列表的日历表格。
要检索2012-07年的所有订单:
select day(c.date), count(*)
from calendar c
left join orders o on c.date=o.date
where year(c.date) = 2012
and month(c.date) = 07
group by day(c.date)https://stackoverflow.com/questions/23119259
复制相似问题