LINUX.ORG.RU

История изменений

Исправление level1, (текущая версия) :

grouping sets поможет тебе в одном запросе совместить отправителя и получателя. Свежесть найдешь оконной функцией. И будут два подзапроса: с grouping sets, и вторая с оконной.

WITH max_upd AS (SELECT ... max(updated_at)... GROUP BY grouping sets ...),
     lasts AS (SELECT ... row_number OVER (PARTITION BY...) n
         FROM max_upd ...
SELECT ... FROM lasts WHERE n = 1;

И если тебе нужны полные данные по сообщению, то будет селф-джоин.

Исправление level1, :

grouping sets поможет тебе в одном запросе совместить отправителя и получателя. Свежесть найдешь оконной функцией. И будут два подзапроса: с grouping sets, и вторая с оконной.

WITH max_upd AS (SELECT ... max(updated_at)... GROUP BY grouping sets ...),
     lasts AS (SELECT ... row_number OVER (PARTITION BY...) n
         FROM max_upd ...
SELECT ... FROM lasts WHERE n = 1;

Исходная версия level1, :

grouping sets поможет тебе в одном запросе совместить отправителя и получателя. Свежесть найдешь оконной функцией. И будут два подзапроса: с grouping sets, и вторая с оконной.

WITH max_updated AS (SELECT ... max(updated_at)... GROUP BY grouping sets ...),
     lasts AS (SELECT ... row_number OVER (PARTITION BY...) n
         FROM max_updated ...
SELECT ... FROM lasts WHERE n = 1;