Skip to content

Instantly share code, notes, and snippets.

@jacekd
Created July 31, 2013 10:43
Show Gist options
  • Save jacekd/6121061 to your computer and use it in GitHub Desktop.
Save jacekd/6121061 to your computer and use it in GitHub Desktop.
date range w/o creating dates table
select dates.selected_date, coalesce(counts.count, 0) from
(select * from (select adddate('1970-01-01',t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) selected_date from (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0, (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1, (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2, (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3, (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6
union select 7 union select 8 union select 9) t4) v where selected_date between '2013-04-01' and '2013-04-15') dates
left outer join
(SELECT DATE_FORMAT( created_at, '%Y-%m-%d' ) DATE, COUNT( id ) AS count
FROM jobs
GROUP BY DATE) counts on (counts.date = dates.selected_date)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment