0
У меня есть SQL-запрос, который выглядит следующим образом:вызов функции окна требует пункт OVER
UPDATE people p
SET p.email = (SELECT
MAX(FIRST_VALUE(email)) OVER (PARTITION BY person_id ORDER BY updated_at DESC)
FROM person_emails pe
WHERE pe.person_id = p.id);
возвращается ошибка:
window function call requires an OVER clause
почему?
Edit:
Я обновил запрос на что-то вроде этого:
UPDATE people p
SET p.email = (
SELECT MAX(
FIRST_VALUE(email) OVER (PARTITION BY person_id ORDER BY updated_at DESC)
)
FROM person_emails pe WHERE pe.person_id = p.id
);
теперь возвращает:
ERROR: aggregate function calls cannot contain window function calls
LINE 4: FIRST_VALUE(email) OVER (PARTITION BY person_id ORDER ...
^
Я обновил запрос на что-то вроде этого: UPDATE люди р SET p.email = ( SELECT MAX ( FIRST_VALUE (электронная почта) НАД (PARTITION BY person_id ORDER BY DESC updated_at) ) ОТ person_emails ре ГДЕ pe.person_id = p.id ); Теперь он возвращает: ОШИБКА: вызовы функций агрегата не могут содержать вызовы функций окна LINE 4: FIRST_VALUE (email) ПЕРЕДАЧА (PARTITION by person_id ORDER ... –
@ MateuszUrbański Да, эта ошибка звучит разумно, я должен был это видеть. Исправлено , –