Count totals by year and month

Tom picture Tom · Mar 2, 2011 · Viewed 25.1k times · Source

I have a table that looks like this:

id,created,action
1,'2011-01-01 04:28:21','signup'
2,'2011-01-05 04:28:21','signup'
3,'2011-02-02 04:28:21','signup'

How do I select and group these so the output is:

year,month,total
2011,1,2
2011,2,1

Answer

Adam Lukaszczyk picture Adam Lukaszczyk · Mar 2, 2011

Try this:

SELECT DATE_FORMAT(created, '%Y') as 'year',
DATE_FORMAT(created, '%m') as 'month',
COUNT(id) as 'total'
FROM table_name
GROUP BY DATE_FORMAT(created, '%Y%m')