Mysql
 sql >> Base de données >  >> RDS >> Mysql

Django groupe par dates et valeurs SUM

Hmm, vous utilisez Count , vous devez utiliser Sum , et values() déterminera ce qui se passe dans GROUP BY vous devez donc utiliser values('datetime') seul. Votre jeu de requêtes devrait ressembler à ceci :

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

bien que je ne sois pas sûr de l'ordre du filter() , donc ça pourrait être ça :

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

Je suppose que vous voudriez essayer les deux alors. Si vous voulez voir la requête brute de ces ensembles de requêtes, utilisez Queryset.query :

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

Ainsi, vous pouvez vous assurer d'obtenir la bonne requête.

J'espère que ça aide.