【发布时间】:2010-09-29 18:27:25
【问题描述】:
我有一个工作表,并且正在尝试获取不同时间范围内的工作计数。我当前的查询如下所示:
SELECT COUNT(*) AS 'count',
WEEK(j.created_at) AS 'week',
MONTH(j.created_at) AS 'month',
YEAR(j.created_at) AS 'year',
DATE_FORMAT(j.created_at, '%y') AS 'short_year'
FROM jobs j WHERE j.state <> 'draft'
AND created_at > '2010-06-21'
AND created_at < '2010-08-01'
GROUP BY WEEK(j.created_at)
ORDER BY WEEK(j.created_at)
要更改我的时间范围,我只需将 GROUP BY 从 WEEK 更改为 MONTH,然后按月而不是按周计算。
问题是,我在数周内没有得到空行,但有 0 个工作。我上面查询的结果集是:
count week month year short_year
3 25 6 2010 10
2 26 6 2010 10
2 27 7 2010 10
1 28 7 2010 10
3 30 7 2010 10
您会注意到第 29 周没有数据,这应该是具有 count(0) 的行。有什么方法可以让计数为 0 的行,同时保持在WEEK 和MONTH 之间更改分组的灵活性?
【问题讨论】:
标签: mysql database count group-by