Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Agrupe por combinação de 2 campos e depois ordene pela soma de cada grupo, várias anotações django

print(str(high_margin.query))

Dessa forma, você pode obter o que um queryset produz e brinca como uma consulta preguiçosa, conforme declarado por responda aqui. Então, recebi a consulta SQL esperada apenas adicionando o expiry_date nos values , que produz um grupo por nome, data de validade conforme indicado por docs .
O código muda como:
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)]

*não tenho certeza se realmente está correto