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を書いたほうが解りやすそう。