Не получается выборка последней записи в группах(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

Звёзды - заменить на список полей.

→ Ссылка