Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Gruppieren Sie nach Kombination von 2 Feldern und bestellen Sie dann nach der Summe jeder Gruppe, mehrere Anmerkungen Django

print(str(high_margin.query))

Auf diese Weise erhalten Sie was für ein queryset produziert und herumspielt, da es sich um eine faule Abfrage handelt, wie von hier antworten. Ich habe also die erwartete SQL-Abfrage erhalten, indem ich einfach das expiry_date hinzugefügt habe in den values , die eine Gruppe nach Namen und Ablaufdatum erzeugt, wie in docs .
Code ändert sich als:

high_margin = StoreInvoiceBreakup.objects \
  .filter(store_invoice__store_id=store_id) \
  .values('product_name', 'expiry_date') \
  .annotate(gross_margin_sum=Sum('gross_margin')) \
  .order_by('gross_margin_sum') \
  .distinct()[:int(sell_range)]

*nicht sicher, ob es wirklich richtig ist