web-dev-qa-db-ja.com

オブジェクトのJSON配列から数値のJSON配列を抽出する

次のようなオブジェクトのjson配列を含むテーブルがあります。

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

たとえば、 "a"値のみのjson配列を含むテーブルを取得したいと思います。

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

私はPostgreSQL 11を使用しているため、最新の機能を使用できます。

3
Vakarelov

最初に配列要素のネストを解除してから、各値を集計する必要があります。

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

オンラインの例: https://rextester.com/ZONHTW97204