Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Django agrupar por datas e valores SUM


Hmm, você está usando Count , você deve usar Sum , e values() irá determinar o que vai para GROUP BY então você deve usar values('datetime') só. Seu queryset deve ser algo assim:
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'))

embora eu não tenha tanta certeza sobre a ordem do filter() , então pode ser isso:
values = self.model.objects.values('datetime').annotate(data_sum=Sum('data')).filter(
    datetime__range=(self.dates[0], self.dates[1])
)

Acho que você gostaria de tentar os dois então. Se você quiser ver a consulta bruta desse conjunto de consultas, use Queryset.query :
print self.model.objects.filter(
    datetime__range=(self.dates[0], self.dates[1])
).values('datetime').annotate(data_sum=Sum('data')).query.__str__()

Assim, você pode ter certeza de obter a consulta certa.

Espero que ajude.