आपका जोंस सरणी गड़बड़ है, जैसे @posz ने टिप्पणी की ए> . होना ही होगा:
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_speed
FROM tbl t
, json_array_elements(speed_data->'speed') x
GROUP BY t.id;
आगामी पृष्ठ में 9.4 हम नए json_array_elements_text()
. के साथ सरल बना सकते हैं (कलाकारों में भी कम त्रुटि-प्रवण):
SELECT t.id, avg(x::numeric) AS avg_speed
FROM tbl t
, json_array_elements_text(speed_data->'speed') x
GROUP BY t.id;
अधिक विवरण:
इसके अलावा:इसे सादे सरणी के रूप में संग्रहीत करना अधिक कुशल होगा (numeric[]
, नहीं json
) या शुरू करने के लिए एक सामान्यीकृत स्कीमा में।