Агрегирование по другой таблице после аннотации

У меня следующий annotate

qs.annotate(
    goods_with_sales=Count('goods', filter=Q(goods__history__sales__gt=0)),
)

То же goods_with_sales_percent=goods_with_sales / sum_sales * 100

Мне нужно получить процент от goods_with_sales к сумме всех goods__history__sales. Пробую с Window, но не получается...

Это raw sql запрос:

SELECT  
  "wb_brand"."id", 
  "wb_brand"."name", 
  COUNT("wb_good"."id") FILTER (
    WHERE 
      "wb_stockshistory"."sales" > 0
  ) AS "goods_with_sales" 
FROM 
  "wb_brand" 
  LEFT OUTER JOIN "wb_good" ON (
    "wb_brand"."id" = "wb_good"."brand_id"
  ) 
  LEFT OUTER JOIN "wb_stockshistory" ON (
    "wb_good"."id" = "wb_stockshistory"."good_id"
  ) 
GROUP BY 
  "wb_brand"."id"

Также я пробовал это с CTE, но тоже не счастье.

Как я могу решить эту проблему с помощью Django ORM (предпочтительно) или с помощью SQL? P.S. Также должно быть CASE/WHEN условие для делителя на ноль, если sum_sales == 0.

Вернуться на верх