您的json数组被弄乱了,就像@poszcommented一样。必须是:
CREATE TABLE tbl (id int, speed_data json);INSERT INTO tbl VALUES (391982, '{"speed":[1.3,1.3,1.4,1.5]}'), (391983, '{"speed":[0.9,0.8,0.8,1.0]}');
您的查询也以多种方式扭曲。在第 9.3 页中将像这样工作:
SELECt t.id, avg(x::text::numeric) AS avg_speedFROM tbl t , json_array_elements(speed_data->'speed') xGROUP BY t.id;
SQL提琴。
在即将到来的pg 9.4中, 我们可以使用新的来简化 *** 作
json_array_elements_text()(转换中也不太容易出错):
SELECt t.id, avg(x::numeric) AS avg_speedFROM tbl t , json_array_elements_text(speed_data->'speed') xGROUP BY t.id;
另外:将其存储为纯数组(
numeric[],而不是
json)或以规范化模式存储会更加有效。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)