Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как впихнуть невпихуемое? / 8 сообщений из 8, страница 1 из 1
10.06.2020, 12:07
    #39967799
user_t0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как впихнуть невпихуемое?
Добрый день,

Есть тестовая табличка:

WITH cte AS (
SELECT 1 AS id, 1 type_number, 10 type_count
UNION ALL
SELECT 1 AS id, 2 type_number, 20 type_count
UNION ALL
SELECT 2 AS id, 1 type_number, 15 type_count
UNION ALL
SELECT 2 AS id, 2 type_number, 25 type_count
)
SELECT * FROM cte


Вот такое на выходе:
Код: sql
1.
2.
3.
4.
5.
id,type_number,type_count
1;1;10
1;2;20
2;1;15
2;2;25




Подскажите пожалуйста, как можно в запрос вставить создание json чтобы результат был такой:

1;(1,10; 2,20)
2;(1,15; 2,25)

т.е.

id и json, который к нему относится.

надо group by id, а как сделать чтобы все что к этому id вставилось в json?
...
Рейтинг: 0 / 0
10.06.2020, 12:18
    #39967803
user_t0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как впихнуть невпихуемое?
Или в json невозможно вставить две строки таблицы?
Так чтобы (1,10; 2,20)
А не
(1,10)
(2,20)

получилось.
...
Рейтинг: 0 / 0
10.06.2020, 12:21
    #39967807
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как впихнуть невпихуемое?
user_t0
Подскажите пожалуйста, как можно в запрос вставить создание json чтобы результат был такой:

Это не json. Ты имел ввиду
Код: sql
1.
2.
3.
4.
{
"1" : { "1" : 10, "2" : 20},
"2" : { "1" : 15, "2" : 25}
}


?
...
Рейтинг: 0 / 0
10.06.2020, 12:33
    #39967815
user_t0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как впихнуть невпихуемое?
crutchmaster
user_t0
Подскажите пожалуйста, как можно в запрос вставить создание json чтобы результат был такой:

Это не json. Ты имел ввиду
Код: sql
1.
2.
3.
4.
{
"1" : { "1" : 10, "2" : 20},
"2" : { "1" : 15, "2" : 25}
}


?


В том-то и дело что именно json надо (
...
Рейтинг: 0 / 0
10.06.2020, 15:58
    #39967924
user_t0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как впихнуть невпихуемое?
crutchmaster
user_t0
Подскажите пожалуйста, как можно в запрос вставить создание json чтобы результат был такой:

Это не json. Ты имел ввиду
Код: sql
1.
2.
3.
4.
{
"1" : { "1" : 10, "2" : 20},
"2" : { "1" : 15, "2" : 25}
}


?


Хотя так тоже пойдет, но это внутри json должно быть.
...
Рейтинг: 0 / 0
11.06.2020, 06:07
    #39968100
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как впихнуть невпихуемое?
user_t0
Хотя так тоже пойдет

Это - самый настоящий json. А что там со скобками было я не знаю.
Сделай велик со string_agg и группировкой по id.
Не хочешь велик, посмотри в мануале постгресса json функции. Может придумаешь, как их них слепить себе такую структуру.
...
Рейтинг: 0 / 0
11.06.2020, 06:23
    #39968102
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как впихнуть невпихуемое?
user_t0,
Велик:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
WITH cte AS (
SELECT 1 AS id, 1 type_number, 10 type_count
UNION ALL
SELECT 1 AS id, 2 type_number, 20 type_count
UNION ALL
SELECT 2 AS id, 1 type_number, 15 type_count
UNION ALL
SELECT 2 AS id, 2 type_number, 25 type_count
)
select concat('{', string_agg(v,','),'}') from (
   SELECT concat('"',id, '":', 
          concat('{',string_agg(concat('"',type_number,'" : ',type_count),','),'}')) v
   FROM cte group by id) x



https://dbfiddle.uk/?rdbms=postgres_12&fiddle=321419f06c9d8d56e31902c1bd5c49c1
...
Рейтинг: 0 / 0
16.06.2020, 19:05
    #39969912
user_t0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как впихнуть невпихуемое?
crutchmaster,

спасибо, получилось!
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как впихнуть невпихуемое? / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]