首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Group By语句显示包含零计数的MySQL计数

使用Group By语句显示包含零计数的MySQL计数
EN

Stack Overflow用户
提问于 2014-04-17 04:14:31
回答 2查看 490关注 0票数 0

我正在生成mysql查询,以显示当月按天数分组收到的订单数量。

mysql的表结构如下:

代码语言:javascript
复制
order_id   date   
========   ==========
1234       2012-07-02
1235       2012-07-02
1236       2012-07-04
1237       2012-07-07
1238       2012-07-08

现在,我希望它使用MySQL语句返回以下结果

代码语言:javascript
复制
count(order_id)   day
===============   ===
0                 01
2                 02
0                 03
1                 04
0                 05
0                 06
1                 07
1                 08

依此类推,直到30/31月底取决于月份中的日期。

期待您的建议和帮助。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2014-04-17 04:26:37

代码语言:javascript
复制
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的行。

票数 0
EN

Stack Overflow用户

发布于 2014-04-17 13:09:48

准备包含月和日列表的日历表格。

要检索2012-07年的所有订单:

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23119259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档