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

Regrouper par combinaison de 2 champs puis ordonner par la somme de chaque groupe, plusieurs annotations django

print(str(high_margin.query))

De cette façon, vous pouvez obtenir ce qu'est un queryset produit et joue comme une requête paresseuse comme indiqué par répondez ici. J'ai donc obtenu la requête SQL attendue en ajoutant simplement le expiry_date dans les values , qui produit un groupe par nom, date d'expiration comme indiqué par docs .
Le code change comme :

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

*pas sûr si c'est vraiment correct