Postgresql
在 Postgres 9.3 中實現 json_object_agg()
我覺得我需要
json_object_agg()
Postgres 9.4 的功能,但我現在無法從 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}
我認為
json_object_agg()
Postgres 9.4 的功能可以完美地做到這一點,我只需要呼叫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