надо только последние версии удалить. База redshift. Буду благодарна за помощь DELETE FROM test.jobs_extracted_skills
WHERE job_id in (SELECT t.job_id
FROM test.jobs_extracted_skills AS t
inner JOIN
(
SELECT job_id,version,
skills_number,
skills_list,
rank() OVER (PARTITION BY job_id ORDER BY version DESC) AS job_id_ranked
FROM test.jobs_extracted_skills
WHERE version <= (SELECT skills_version FROM test.metadata WHERE id=1)
ORDER BY job_id, version DESC
) AS t2
ON t.job_id = t2.job_id
AND t.version = t2.version
where t2.job_id_ranked > 1)
Так условие наоборот говорит: удали все кроме последнего.
Где именно? Может это условие не в том месте? where t2.job_id_ranked > 1
У последней записи как раз rank будет 1 тк сортировка в окне по убыванию
Мне надо ранк больше единицы, но я не знаю, как его определить
<= 2, две максимальных
оконную функцию надо использовать
Она у меня используется, но как сортировка
? https://www.postgresql.org/docs/9.1/tutorial-window.html
Обсуждают сегодня