web-dev-qa-db-fra.com

Extraire le tableau JSON de nombres du tableau JSON d'objets

J'ai une table contenant un tableau d'objets json similaire à celui-ci:

id    |   record
____________________
name1 | [{"a":0, "b":x}, {"a":1, "b":y}, {"a":2, "b":z}, ...]

Je voudrais obtenir une table contenant un tableau json de seulement, disons, les valeurs "a":

id    |   record
____________________
name1 | [0, 1, 2, ...]

J'utilise PostgreSQL 11, donc les dernières fonctions sont acceptables.

3
Vakarelov

Vous devez d'abord désintégrer les éléments du tableau, puis agréger chaque valeur:

select id, 
       (select jsonb_agg(t -> 'a') from jsonb_array_elements(record) as x(t)) as record
from the_table;

Exemple en ligne: https://rextester.com/ZONHTW97204

5