Django+mysqlでDateFieldを月ごとに集計する。
関連 : mysqlでdate型を月毎に集計する - brainstorm
昨日SQLで書いたやつをDjangoのquerysetで書けるかどうかいろいろ試してみた。
実行したいSQL
select DATE_FORMAT(event_date, "%Y%m") as ym, count(id) as count from event group by DATE_FORMAT(event_date, "%Y%m");
>>> select = dict(ym="DATE_FORMAT(event_date, '%%Y%%m')")
>>> qs = Event.objects.extra(select=select)
>>> qs = qs.values("ym").annotate(cnt=Count('id'))
>>> qs
SELECT (DATE_FORMAT(event_date, '%Y%m')) AS `ym`,
COUNT(`event`.`id`) AS `cnt`
FROM `event`
GROUP BY (DATE_FORMAT(event_date, '%Y%m'))
ORDER BY NULL LIMIT 21これだったらrawで生のSQLを書いたほうが解りやすそう。