Агрегирование по другой таблице после аннотации
У меня следующий 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
.