Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Django-Gruppierung nach Daten und SUM-Werten

Hmm, Sie verwenden Count , sollten Sie Sum verwenden , und values() bestimmt, was in GROUP BY kommt Sie sollten also values('datetime') verwenden nur. Ihr Abfragesatz sollte in etwa so aussehen:

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

obwohl ich mir über die Reihenfolge des filter() nicht so sicher bin , es könnte also Folgendes sein:

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

Ich schätze, du würdest dann beides ausprobieren wollen. Wenn Sie die rohe Abfrage dieses Abfragesatzes sehen möchten, verwenden Sie Queryset.query :

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

So können Sie sicherstellen, dass Sie die richtige Abfrage erhalten.

Hoffe es hilft.