Group by и оконная функция. SQL
Подскажите, разве при использовании оконной функции count не является агрегирующей функцией? Почему он требует group by? Это ломает мне весь код
Код такой:
with years_1 as
(select years = 2019 as year2019
, years = 2020 as year2020
,ord_an
from (select extract (year from ord_datetime) as years
, ord_an
from orders) t1
)
select an_id
, count(ord_id) over (partition by an_id order by year2019) as year2019
from analysis a
join orders o
on a.an_id = o.ord_an
join years_1 y
on o.ord_an = y.ord_an
group by an_id
order by an_id
Выдается ошибка:
column "o.ord_id" must appear in the GROUP BY clause or be used in an aggregate function
LINE 12: , count(ord_id) over (order by year2019) as yesr2019
Ответы (1 шт):
Автор решения: Аня Евстифейкина
→ Ссылка
Ошибка возникает потому, что в одном запросе вы используете и оконную функцию, и группировку group by
.
По очередности выполнения оконная функция считается после group by
. Не получится агрегировать то, что еще не посчитано, вот и возникает ошибка.
Уберите group by
.