172 похожих чатов

Как можно из агрегирующей функции исключить какое-то поле? пример: у меня есть

запрос
SELECT name, description, date
FROM table1
JOIN table 2 ON ...
JOIN table 3 ON ...

эту таблицу я потом группирую по, например, name

SELECT name, json_agg(t1)
FROM (
SELECT name, description, date
FROM table1
JOIN table 2 ON ...
JOIN table 3 ON ...
) AS t1
GROUP BY name

и у меня получается, что в поле с json это поле дублируется (я понимаю, почему)
как исключить оттуда это поле? убрать его из внутренней выборки я не могу, т.к. по нему идет группировка

14 ответов

26 просмотров

Может так ? SELECT name, json_agg(t1) FROM ( SELECT description, date FROM table1 JOIN table 2 ON ... JOIN table 3 ON ... ) AS t1 GROUP BY name

Эдуард-Галкин Автор вопроса
Эдуард-Галкин Автор вопроса
Ilya Zviagin
Может так ? SELECT name, json_agg(t1) FROM (...

ERROR: столбец "name" не существует

Эдуард Галкин
ERROR: столбец "name" не существует

name и всё остальное из разных таблиц ?

Эдуард-Галкин Автор вопроса
Ilya Zviagin
name и всё остальное из разных таблиц ?

ну, там join идет, часть данных из разных таблиц, да но смысл в том, что group by тут работает с том таблицей, которую сформировал внутренний селект

Используй json_build_object https://sqlize.online/sql/psql15/3831762df0c7f6c5d4e85302c45b427a/

Эдуард-Галкин Автор вопроса
Nick Nalbantov
Используй json_build_object https://sqlize.online...

ладно, видимо придется вот так делать спасибо

Эдуард-Галкин Автор вопроса
Nick Nalbantov
Используй json_build_object https://sqlize.online...

просто плохо, что ключ для json берется не из названия колонки, а из текста

Эдуард Галкин
просто плохо, что ключ для json берется не из назв...

Тогда проще так сделать https://sqlize.online/sql/psql15/67646906fe4c7fdc71580904f4e3a048/

Эдуард-Галкин Автор вопроса
Nick Nalbantov
Тогда проще так сделать https://sqlize.online/sql...

пробую скопировать у тебя, пишет синтаксическую ошибку: json_agg(t1) #- '{0, id}' ERROR: оператор не существует: json #- unknown LINE 2: json_agg(t1) #- '{0, id}'

Эдуард Галкин
пробую скопировать у тебя, пишет синтаксическую ош...

А попробуй jsonb_agg вместо json_agg Какая версия PG вообще?

Эдуард-Галкин Автор вопроса

Вот так, например: https://dbfiddle.uk/yus2nEq6

Эдуард-Галкин Автор вопроса
Yaroslav Schekin
Вот так, например: https://dbfiddle.uk/yus2nEq6

вот, это идеальный вариант я долго его не мог понять, но когда понял - супер спасибо!

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта