Postgres 9.4のjson_object_agg()
関数が必要なようですが、現在9.3からアップグレードすることはできません。 9.3でやりたいことはありますか?これが私のシナリオです。次のようなデータのテーブル_click_activity
_があります
_user | offer | clicks
-----|-------|--------
fred |coupons| 3
fred |cars | 1
john |coupons| 2
_
しかし、これを次のように変えたいと思います:(ユーザーごとのアクティビティを集計します)
_user | activity
-----|----------
fred | {"coupons": 3, "cars": 1}
john | {"coupons": 2}
_
Postgres 9.4のjson_object_agg()
関数はこれを完全に実行すると思います。
_select user, json_object_agg(offer, clicks) from click_activity group by 1
_
9.3でこれを行う方法はありますか?ありがとうございました!
String_agg(9.3で利用可能)を使用してjson_object_aggをエミュレートすることができました。
あなたの例は:
select user, ('{' || string_agg('"' || offer || '": ' || clicks, ',') || '}')::json as activity
from click_activity
group by user
Json_object_agg => json_aggの代わりに使用
select user, json_agg((offer, clicks)) from click_activity group by 1