0

次の表を考えます。

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           |
4

1 に答える 1