text
Нужно по каждому user_id получить, user_id, text последние сообщения
Таблица такая
id user_id message
1 524 aaa
2 524 WOAAA
3 524 Привет
4 524 Лол
5 270 Хух
6 270 Привет
7 524 Aa
Нужно
524 aaa
270 Хух
Есть изящный вариант, а то у меня мысль подзапрос получить всех последних, а потом подтянуть текст?
вот что вам подойдет CREATE OR REPLACE FUNCTION public.last_agg ( anyelement, anyelement ) RETURNS anyelement LANGUAGE sql IMMUTABLE CALLED ON NULL INPUT AS $$ SELECT $2; $$; CREATE AGGREGATE public.last ( sfunc = public.last_agg, basetype = anyelement, stype = anyelement ); c этим новым агрегатом смело посчитаете как обычно
select distinct on (user_id) as user_id, message from table order by user_id, id desc/asc Попробуй такое. Только я не очень понял про последнее значение, как оно отсортировано. Если по id, то результат другой должен быть у тебя. Поиграйся с asc/desc
Вот, вот так верно, вчера с телефона в сортире писал, не проверил: select distinct on (user_id) user_id, message from xxx order by user_id, id asc;
Обсуждают сегодня