У меня есть следующая структура таблицы в моей Postgres DB (v12.0)
id | pieces | item_id | material_detail
---|--------|---------|-----------------
1 | 10 | 2 | [{"material_id":1,"pieces":10},{"material_id":2,"pieces":20},{"material_id":3,"pieces":30}]
2 | 20 | 2 | [{"material_id":1,"pieces":40}
3 | 30 | 3 | [{"material_id":1,"pieces":20},{"material_id":3,"pieces":30}
Я использую запрос GROUP BY для этих записей, как показано ниже
SELECT SUM(PIECES) FROM detail_table GROUP BY item_id HAVING item_id =2
Используя это, я получу общее количество штук как 30. Но как я могу получить общее количество штук из группы material_detail по material_id.
Я хочу получить что-то вроде этого
pieces | material_detail
-------| ------------------
30 | [{"material_id":1,"pieces":50},{"material_id":2,"pieces":20},{"material_id":3,"pieces":30}]
Поскольку я из MySQL фона, я не знаю, как добиться этого с полями JSON в Postgres.
Примечание: столбец material_detail имеет тип JSONB.