История изменений
Исправление 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;