Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Django grupuj według dat i wartości SUMA

Hmm używasz Count , powinieneś użyć Sum i values() określi, co trafi do GROUP BY więc powinieneś użyć values('datetime') tylko. Twój zestaw zapytań powinien wyglądać mniej więcej tak:

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

chociaż nie jestem pewien kolejności funkcji filter() , więc może to być tak:

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

Myślę, że chciałbyś wtedy spróbować obu. Jeśli chcesz zobaczyć surowe zapytanie z tych queryset, użyj Queryset.query :

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

Dzięki temu możesz mieć pewność, że otrzymasz właściwe zapytanie.

Mam nadzieję, że to pomoże.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ustaw nową wartość dla ft_min_word_len FULLTEXT w mysql

  2. LocalDateTime , ZonedDateTime i znacznik czasu

  3. Widoki MySQL i użycie indeksu

  4. Jak używać orkiestrowego/tenanti w Laravel 5 do budowania aplikacji wielodostępnej z wieloma bazami danych?

  5. Instalowanie MySQLdb na Mac OS X