volkov_p_v
@volkov_p_v
FrontEnd разработчик

Как сформировать выборку в массив из повторяющихся записей?

В таблице есть уникальный id, есть id пользователя и значение от 1 до 6, которое он выбрал.
id | id_user | data
----+-----------+-------
1 | 1456 | 6
2 | 5812 | 2
3 | 1456 | 1
4 | 1456 | 5
5 | 5812 | 3
6 | 7774 | 1

Мне надо сделать выборку так, что бы получилось id пользователя и массив всех выбранных им значений за все время.
[
    {
        id_user: 1456,
        data: [6, 1, 5],
    },
    {
        id_user: 5812,
        data: [2,3]
    },
    {
        id_user: 7774,
        data: [1]
    }
]

Как должен выглядеть запрос для данного решения?
Заранее спасибо!
  • Вопрос задан
  • 780 просмотров
Решения вопроса 2
Melkij
@Melkij
PostgreSQL DBA
select id_user, array_agg(data) from tablename group by id_user

Можно и сразу json собрать. С оглядкой на версию базы только.
select json_agg((
select json_build_object('id_user', id_user, 'data', json_agg(data)) from tablename group by id_user
));
Ответ написан
qonand
@qonand
Software Engineer
SELECT  id_user, array_agg(data) FROM mytable GROUP BY id_user
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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