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

Добрый вечер! Есть простой вопрос, но вечерний затуп не дает найти

ответ.
Есть три строчки:
'A',{100,101}
'B',{102}
'A',{103}

Нужно написать запрос таким образом чтобы стало
'A',{100,101,103}
'B',{102}

Можно конечно по каждому ID (букве) сначала раскрыть, массив через unnest, а потом снова сгруппировать через array_agg. https://www.db-fiddle.com/f/eRBhTyR4JjBfSv59zbXRqF/0
Но хотелось бы сделать тоже ввиде одной групповой функции совмещающей array_agg и array_cat.
Может кто подскажет название или на статейку ссылку даст как такую создать?
Всем заранее спасибо 🙏🏻

11 ответов

15 просмотров

Группировка не работает?

а почему просто array_cat не годится?

Alexey-Zhuravlev Автор вопроса
Игорь Melekhine
Группировка не работает?

какой агрегатной функцией? sum () пробовал не работает, по отдельности array_agg и array_cat, тоже.

Alexey-Zhuravlev Автор вопроса
Игорь Melekhine
GROUP BY id

Query Error: error: function array_cat(integer[]) does not exist https://www.db-fiddle.com/f/cka73xSEyPCE3G213wy5ot/0

Alexey Zhuravlev
Query Error: error: function array_cat(integer[]) ...

Извините, я был не прав. Не знаю как сделать, кроме как через unnest

Решил отвлечься от суровой реальности, написал такое: https://www.db-fiddle.com/f/eRBhTyR4JjBfSv59zbXRqF/1 Это если уж очень хотите сделать без подзапроса, хотя не вижу нем ничего плохого.

Alexey-Zhuravlev Автор вопроса
Дмитрий Копытов
Решил отвлечься от суровой реальности, написал так...

Благодарю, это то что я ожидал в запросе. Агрегатная функция тоже понятная, спасибо за ваш пример. Жаль что в PG нет такого варианта встроенного. Интересны еще замеры по производительности, что лучше unnest + Array_agg, или вариант с агрегатной функцией через селект, если в исходных данных 1 млн записей, а ключей около 50к. Попробую завтра устроить такое тестирование.

Alexey Zhuravlev
Благодарю, это то что я ожидал в запросе. Агрегатн...

Агрегатную функцию можно обвешать дополнительными атрибутами типа IMMUTABLE или RETURNS NULL ON NULL INPUT, я не стал с этим заморачиваться О результатах замера прошу в личку отписать, самому очень интересно, какой вариант лучше.

Дмитрий Копытов
Агрегатную функцию можно обвешать дополнительными ...

RETURNS NULL ON NULL INPUT — это неправда, не надо так говорить IMMUTABLE не ускорит при использовании в качестве агрегатной функции, т.к. агрументы каждый вызов другие

alex che
RETURNS NULL ON NULL INPUT — это неправда, не надо...

По поводу NULL, думаю, зависит от конкретной задачи, а IMMUTABLE стоит пометить хотя бы для общей информации, т.к. функция может использоваться и в другом месте, например. Впрочем, не готов вести споры в 2 часа ночи.

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

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

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Привет всем. Не знаю, удачный ли чатик я выбрал для вопроса, но он как будто в целом про концепцию фп и конкретно про Haskell. Прочитал, что в целом в мире фп нет идеи мутабел...
Gellert Cringewald
15
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Всем привет! поделитесь, пож-та, как кто дебажил / решал проблему с 504 Time out ошибкой от nginx, когда стучишься на свой vapor сервер? в логах /var/log/nginx/error.log е...
Paul
24
Как добавить ссылку в Быстрый доступ в Проводнике windows 10? Нашёл, как на power shell сделать, но может есть способ через Дельфи?
А
31
@helgispbru @Dreamer_0x01 @Pathologic93 @webber_12 Не уверен, что вам всем это жутко интересно, но в продолжение недавнего диалога отправлю свои наброски. Хочу понять, правил...
Андрей [aharito] Харитонов
13
Всем, привет! Подскажите, пожалуйста, самую лёгкую, быструю, лаконичную и адаптивную тему для WP? Бесплатно или чтобы можно было в РФ оплатить доступ к теме. Раньше брал на...
Евгений Грак
14
Подскажите, пожалуйста, как с массивами данных в 1.4 работать? Есть сниппет, который возвращает массив объектов. В 3 все понятно на блейде, а здесь ..
Никита Ковалёв
12
Карта сайта