Postgresql - количество элементов во вложенном блобе JSON - PullRequest
0 голосов
/ 18 марта 2020

У меня есть оператор Postgres, который возвращает извлечения / итерации по BLOB-объекту json в столбце value таблицы. Я могу получить счет на один уровень глубже, используя запрос ниже, но я не могу посчитать глубже. Я использовал:

select jsonb_array_length(value -> 'team') as team_count

Это возвращает правильный счет, но я не могу использовать это для подсчета names под каждой командой.

В идеальном мире я хотел бы, чтобы мои результаты вернуть 4 строки результатов вроде этого (заголовок и соответствующее количество имен):

Product Owner, 2
Technical Product Manager, 2
Data Modeler, 0 
Engineer, 0

Как бы я go изменил этот запрос, чтобы подсчитать names в team? Я пробовал все виды вещей, но ничего, что меня не сблизило.

Образец Json ниже.

"team":[
  {
     "title":"Product Owner",
     "names":[
         "John Smith",
         "Jane Doe"
     ]
  },
  {
     "title":"Technical Project Manager",
     "names":[
         "Fred Flintstone",
         "Barney Rubble"
     ]
  },
  {
     "title":"Data Modeler"
  },
  {
     "title":"Engineer"
  }

1 Ответ

1 голос
/ 19 марта 2020

Вы, похоже, ищете

SELECT
   role -> 'title' AS team_role,
   jsonb_array_length(role -> 'names') AS member_count
FROM jsonb_array_elements(value -> 'team') AS team(role)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...