3
我有一个作业表,并且正试图获得不同时间范围内作业的计数。我当前的查询看起来是这样的:在按列分组时选择零计数
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)
要改变我的时间表,我简单地改变从WEEK
的GROUP BY
到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周,这应该是与计数行(0)。有没有办法获得0计数行,同时保持在WEEK
和MONTH
之间更改我的分组的灵活性?
我们没有与这样的数据日历表,创建一个需要对应用程序的数据结构进行重大更改,而我没有时间实施。如果我将所有'c.date'更改为'c.created_at',并且使用'jobs'而不是'calendar',它将返回与我原始查询相同的数据集。 – 2010-09-29 18:36:44
您需要**首先创建**辅助日历表。 – 2010-09-29 18:38:14
看到我上面修改的评论。这将对Rails应用程序服务这些数据发生大量更改,并且我没有时间来实现这些更改。 – 2010-09-29 18:38:53