Не получается выборка последней записи в группах(postgres)
Всем привет прошу помочь с запросом.
База postgre.
Левая таблица Задачи, правая Результаты по задаче. Нужно вывести все задачи и результаты, если по задаче нет результата null, если есть то вывести только последний созданный.
Т.е если всего 100 задач, вывести все 100, но где-то будет последний коммент, где-то null вместо коммента
Вот мой запрос:
select t.guid, a0.comment
from sys_tasks t left join sys_activities a0
on a0.task_guid = (select a1.task_guid
from sys_activities a1
where a1.task_guid=t.guid
order by a1.dateCreate desc
limit 1)
При запуске запрос зависает. Не понимаю почему. Руководствовался: https://www.sql.ru/forum/687908/faq-vyborka-pervoy-posledney-zapisi-v-gruppah
Ответы (1 шт):
Автор решения: Akina
→ Ссылка
WITH
cte AS ( SELECT s.guid,
sa.comment,
ROW_NUMBER() OVER (PARTITION BY sa.task_guid ORDER BY sa.dateCreate DESC) rn
FROM sys_tasks s
LEFT JOIN sys_activities sa ON s.guid = sa.task_guid )
SELECT guid, comment
FROM cte
WHERE rn = 1
Звёзды - заменить на список полей.