私のタブラデータは次のとおりです。
_id | 製品番号 | 商品名 | 販売価格 | 購入金額 | 国 |
---|---|---|---|---|---|
1 | prd_1 | 製品1 | 15 | 12 | アメリカ合衆国 |
2 | prd_1 | 製品1 | 16 | 13 | カナダ |
3 | prd_2 | 製品2 | 7 | 5 | 中国 |
4 | prd_2 | 製品2 | 12 | 10 | 日本 |
製品ごとにグループ化し、json形式に変換したい。次のような最終版が欲しいです。
{
"_id" : "prd_1",
"details" : [
{
"_id" : 1,
"product_id" : "prd_1",
"product_name" : "product one",
"sell_price" : 15,
"purchase_price" : 12,
"country" : "usa"
},
{
"_id" : 2,
"product_id" : "prd_1",
"product_name" : "product one",
"sell_price" : 16,
"purchase_price" : 13,
"country" : "canada"
},
]
}
{
"_id" : "prd_2",
"details" : [
{
"_id" : 3,
"product_id" : "prd_2",
"product_name" : "product two",
"sell_price" : 7,
"purchase_price" : 5,
"country" : "china"
},
{
"_id" : 4,
"product_id" : "prd_2",
"product_name" : "product two",
"sell_price" : 10,
"purchase_price" : 12,
"country" : "japan"
},
]
}
次のクエリを作成しましたが、必要な結果が得られません。すべてのjsonオブジェクトを1列だけにしたいからです。必要なクエリを作成するにはどうすればよいですか? 可能です?
select product_id,
json_agg(obj) as details
from (
select product_id, json_build_object(
'_id', _id,
'product_id', product_id,
'product_name', product_name,
'sell_price', sell_price,
'purchase_price', purchase_price,
'country', country
) as obj
from products p) tmp
group by product_id;