Django: Есть ли способ применить агрегатную функцию к оконной функции?
Я уже сделал сырой SQL этого запроса в качестве последнего средства.
У меня есть проблема с пробелами и островками, где я получаю соответствующие группы с помощью двух ROW_NUMBER -s. Позже я использую COUNT и MAX следующим образом:
SELECT ..., MAX(count) FROM (
SELECT ..., COUNT(group) FROM (
SELECT ...
(ROW_NUMBER(ORDER BY ...) - ROW_NUMBER(PARTITION BY ... ORDER BY ...)) AS group
....
) AS x
GROUP BY ...
) AS y
GROUP BY ...
На данный момент я закончил внутренний запрос и его возможное представление с помощью Django ORM, но когда я пытаюсь аннотировать над group, он выдает ошибку:
django.db.utils.ProgrammingError: aggregate function calls cannot contain window function calls
Я еще не додумался до использования Subquery, но я также не уверен, что это вообще сработает. Мне не нужно фильтровать функцию окна, только использовать агрегаты на ней.
Есть ли способ решить это с помощью обычного Django, или мне придется прибегнуть к гибридным raw-ORM запросам, возможно, к django-cte ?