sql >> Base de Datos >  >> RDS >> Mysql

Grupo Django por fechas y valores SUM

Hmm, estás usando Count , debe usar Sum y values() determinará lo que entra en GROUP BY entonces deberías usar values('datetime') solamente. Su conjunto de consultas debería ser algo como esto:

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

aunque no estoy tan seguro del orden del filter() , entonces podría ser esto:

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

Supongo que querrás probar ambos entonces. Si desea ver la consulta sin procesar de esos conjuntos 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__()

Para que pueda asegurarse de obtener la consulta correcta.

Espero que ayude.