By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE
CREATE TABLE
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
| id | person_id | key | value |
|---|---|---|---|
| 1 | 1 | a@b.com | |
| 2 | 1 | PHONE | 123 |
| 3 | 2 | b@b.com | |
| 4 | 2 | PHONE | 456 |
SELECT 4
| person_id | json_agg |
|---|---|
| 2 | [{"key" : "EMAIL", "value" : "b@b.com"}, {"key" : "PHONE", "value" : "456"}] |
| 1 | [{"key" : "EMAIL", "value" : "a@b.com"}, {"key" : "PHONE", "value" : "123"}] |
SELECT 2
| json_agg |
|---|
| [{"id" : 1, "name" : "A", "contacts" : [{"key" : "EMAIL", "value" : "a@b.com"}, {"key" : "PHONE", "value" : "123"}]}, {"id" : 2, "name" : "B", "contacts" : [{"key" : "EMAIL", "value" : "b@b.com"}, {"key" : "PHONE", "value" : "456"}]}] |
SELECT 1