【发布时间】:2014-08-26 18:20:04
【问题描述】:
postgres 的一大优点是它allows indexing into a json object。
我有一列数据的格式有点像这样:
{"Items":
[
{"RetailPrice":6.1,"EffectivePrice":0,"Multiplier":1,"ItemId":"53636"},
{"RetailPrice":0.47,"EffectivePrice":0,"Multiplier":1,"ItemId":"53404"}
]
}
我想做的是使用这些数据找到每行的平均零售价格。
有点像
select avg(json_extract_path_text(item_json, 'RetailPrice'))
但实际上我需要为 items json 对象中的每个项目执行此操作。所以对于这个例子,查询单元格中的值是 3.285
我该怎么做?
【问题讨论】:
-
不要将 JSON 用于结构良好的数据。非常糟糕的主意。
-
问题是,数据很难解析。在完整的数据集中,“Items”只是较大 JSON 对象的一个属性。另外,每条记录的属性差异很大,每条记录可能有 50 个不同的属性,你永远不知道在任何给定时间会出现哪些。如果您愿意帮助我弄清楚如何将其存储在数据库中,我很乐意与您讨论更多信息
-
所以它不像您的示例那样结构良好。由于在某种程度上涉及替代方案,因此 JSON 可能是一个不错的选择。检查这个答案:stackoverflow.com/a/876459/131874
标签: sql json postgresql aggregate-functions entity-attribute-value