Mysql
 sql >> Database >  >> RDS >> Mysql

Django raggruppa per date e valori SUM

Hmm stai usando Count , dovresti usare Sum e values() determinerà cosa va in GROUP BY quindi dovresti usare values('datetime') solo. Il tuo set di query dovrebbe essere qualcosa del genere:

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

anche se non sono così sicuro dell'ordine del filter() , quindi potrebbe essere questo:

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

Immagino che vorresti provare entrambi allora. Se vuoi vedere la query grezza di quei set di query, usa Queryset.query :

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

Quindi puoi assicurarti di ottenere la query giusta.

Spero che aiuti.