sql >> Database >  >> RDS >> Mysql

Django groeperen op datum en SUM-waarden

Hmm, je gebruikt Count , moet u Sum . gebruiken , en values() bepaalt wat er in GROUP BY . gaat dus je moet values('datetime') . gebruiken enkel en alleen. Uw queryset zou er ongeveer zo uit moeten zien:

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'))

hoewel ik niet zo zeker ben over de volgorde van de filter() , dus het zou dit kunnen zijn:

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

Ik denk dat je dan beide wilt proberen. Als u de onbewerkte query van die queryset wilt zien, gebruikt u Queryset.query :

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

Zodat u zeker weet dat u de juiste vraag krijgt.

Ik hoop dat het helpt.



  1. MYSQL:Volgnummertabel

  2. Gegevens invoegen in SQL Server

  3. 5 manieren om rijen met kleine letters te retourneren in SQL Server

  4. Het eerste teken DISTINCT van een veld retourneren (MySQL)