PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

JSON कॉलम से औसत की गणना करें

आपका जोंस सरणी गड़बड़ है, जैसे @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;

SQL Fiddle.

आगामी पृष्ठ में 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 ) या शुरू करने के लिए एक सामान्यीकृत स्कीमा में।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django और नए सर्वर पर PostgreSQL कनेक्शन का समय समाप्त ऑपरेशनल त्रुटि

  2. पिछले 3 घंटे का समय लें और 5 मिनट तक समूहित करें

  3. PostgreSQL के साथ अक्षरांकीय छँटाई

  4. C# में ODBC ड्राइवर के साथ PostgreSQL कनेक्शन स्ट्रिंग, कीवर्ड समर्थित नहीं:ड्राइवर

  5. यदि मौजूद नहीं है तो PostgreSQL तालिका बनाएं