Re: Converting row elements into a arrays?

Поиск
Список
Период
Сортировка
От Merlin Moncure
Тема Re: Converting row elements into a arrays?
Дата
Msg-id CAHyXU0xeS=vu-M3z=8EXi6N7ZqhAV+a-fy2ZMQxGgsMgPiw2LA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Converting row elements into a arrays?  (Ron <ronljohnsonjr@gmail.com>)
Ответы Re: Converting row elements into a arrays?  (Pavel Stehule <pavel.stehule@gmail.com>)
Список pgsql-general
On Thu, Mar 2, 2023 at 3:47 PM Ron <ronljohnsonjr@gmail.com> wrote
I'm used to the bog standard COUNT, AVG, MIN, MAX, SUM. It didn't occur to me that there would be others...

wait until you find out you can write your own:

CREATE OR REPLACE FUNCTION agg_leftagg(l TEXT, r anyelement) returns text as
$$
BEGIN
  RETURN CASE
    WHEN l IS NOT NULL THEN  format('%s-%s', l, r)
    ELSE r::TEXT
  END;
END;
$$ LANGUAGE PLPGSQL;

CREATE AGGREGATE leftagg(anyelement) (SFUNC=agg_leftagg, STYPE=TEXT);

CREATE TEMP TABLE s AS SELECT generate_series(1,10) s;

SELECT leftagg(s) FROM s GROUP BY random() > .5; 

postgres=# SELECT leftagg(s) FROM s GROUP BY random() > .5;
  leftagg
────────────
 2-3-5-6-10
 1-4-7-8-9
(2 rows)

this is why I fell in love with postgres 20 years ago, and never looked back

merlion


В списке pgsql-general по дате отправления:

Предыдущее
От: Thorsten Glaser
Дата:
Сообщение: Re: DISTINCT *and* ORDER BY in aggregate functions on expressions(!)y
Следующее
От: Ron
Дата:
Сообщение: Re: Dropping behavior for unique CONSTRAINTs