次の表を考えます。
create table entries (
user_id integer,
locations jsonb
);
次の構造を含むマテリアライズド ビューを作成したいと考えています。これらの列はゼロから始まり、場所にあるものに基づいて合計される必要があります。
create table entries_locations_extracted (
user_id integer,
location_1_a integer,
location_1_b integer,
location_2_a integer,
location_2_b integer
);
場所は常に、次の構造を持つ JSON 配列になります。配列内に複数の場所が存在する場合があります。また、ユーザーごとに複数のエントリが存在する場合があります。
insert into entries (user_id, locations) values (123, '[
{ location=1, a=1, b=2 },
{ location=2, a=3, b=1 },
{ location=2, a=10, b=20 },
{ location=1, a=2, b=3 },
]')
insert into entries (user_id, locations) values (123, '[
{ location=1, a=100, b=200 },
]')
上記の挿入を考えると。マテリアライズド ビューには、次の行が含まれている必要があります。
| user_id | location_1_a | location_1_b | location_2_a | location_2_b |
-----------------------------------------------------------------------
| 123 | 103 | 205 | 13 | 21 |