我在这里显示了以下数据集
http://sqlfiddle.com/#!17/f9280/1
我想以一种获取每个键和类别平均排名
的方式查询数据例如
对于在Postgres上进行此操作的任何帮助或良好参考,将非常感激:)
答案 0 :(得分:2)
在横向联接中使用jsonb_array_elements(data)
:
select
key,
value->>'category' as category,
avg((value->>'rank')::numeric) as rank
from jsonData
cross join jsonb_array_elements(data)
group by key, category
key | category | rank
-----+----------+----------------------
1 | 10 | 95.0000000000000000
1 | 20 | 75.0000000000000000
2 | 11 | 105.0000000000000000
2 | 12 | 80.0000000000000000
(4 rows)