sql >> Databasteknik >  >> RDS >> Mysql

Django grupperar efter datum och SUM-värden

Hmm du använder Count , bör du använda Sum , och values() kommer att avgöra vad som ska in i GROUP BY så du bör använda values('datetime') endast. Din frågeuppsättning bör vara ungefär så här:

from django.db.models import Sum

values = self.model.objects.filter(
    datetime__range=(self.dates[0], self.dates[1])
).values('datetime').annotate(data_sum=Sum('data'))

även om jag inte är så säker på ordningen på filter() , så det kan vara detta:

values = self.model.objects.values('datetime').annotate(data_sum=Sum('data')).filter(
    datetime__range=(self.dates[0], self.dates[1])
)

Jag antar att du skulle vilja prova båda då. Om du vill se den råa frågan för dessa frågeuppsättningar, använd Queryset.query :

print self.model.objects.filter(
    datetime__range=(self.dates[0], self.dates[1])
).values('datetime').annotate(data_sum=Sum('data')).query.__str__()

Så du kan se till att du får rätt fråga.

Hoppas det hjälper.



  1. Huvudsaklig användning av sys.dm_os_wait_stats

  2. Hur du skyddar dina PostgreSQL-databaser från cyberattacker med SQL-brandvägg

  3. SQL:Hur man utför sträng är inte lika

  4. Hur man får datumet från en sträng i Oracle