mysql - Selecting count of zero while grouping by column -
i have jobs table, , trying count of jobs different time frames. current query looks this:
select count(*) 'count',         week(j.created_at) 'week',        month(j.created_at) 'month',         year(j.created_at) 'year',         date_format(j.created_at, '%y') 'short_year' jobs j j.state <> 'draft'              , created_at > '2010-06-21'             , created_at < '2010-08-01' group week(j.created_at) order week(j.created_at)   to change timeframe, change group by week month, , counts month instead of week.
the problem not getting empty rows weeks 0 jobs. result set query above is:
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   you'll notice there no data week 29, should row count(0).  there way 0 count row, while maintaining flexibility of changing grouping between week , month?
create auxiliary calendar table containing every date , outer join onto (the below may need tweaking if created_at has time component)
select count(*) 'count',         week(c.date) 'week',        month(c.date) 'month',         year(c.date) 'year',         date_format(c.date, '%y') 'short_year' calendar c left outer join jobs j on j.created_at = c.date             , j.state <> 'draft'  c.date > '2010-06-21'             , c.date < '2010-08-01' group week(c.date) order week(c.date)      
Comments
Post a Comment