Hvordan laver jeg en query med COUNT og GROUP BY?
Jeg har en blog med en række indlæg skrevet på forskellige tidspunkter. Jeg vil gerne have en tabel med år eller måneder og hvor mange indlæg der er skrevet i den pågældende periode.
I SQLite-syntaks ville jeg lave noget der lignede det her:
[code=sql]
SELECT strftime('%Y',pub_date), COUNT(id) FROM indlaeg GROUP BY strftime('%Y',pub_date)
[/code]
Er der nogen smart måde at gøre dette i Django, eller skal jeg til at lave en særlig manager, der laver en custom query? Og hvordan får jeg sådan en til at virke i både SQLite, MySQL, PostgresSQL og hvad der nu ellers er? (jeg har ikke undersøgt om der er nogen syntaks-forskelle).
Jeg ved at der er noget arbejde igang vedr. projections/aggregations, men om det er med i version 1.0 er jeg faktisk ikke helt klar over. Jeg tror det umiddelbart ikke og vil tro at du er nødt til gå til "native" sql. Jeg ved ikke om funktionen strftime er ANSI-SQL, så det vil måske ikke virke på alle supporterede DB engines.
Der er ingen understøttelse for agregering i Django i øjeblikket. Der er en ticket om emnet som man kan følge med i hvis interessen er tilstede:
http://code.djangoproject.com/ticket/3566
Ellers ligger der også et par patches derude som implementerer understøttelse for group by. Men hvis ikke man er frisk på at hacke sin Django kode bliver man nød til, som Lars siger, at bruge rå SQL.
Aaah, Lars havde linket med i sin besked. Jeg undskylder redundansen :-)

