Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

134
Views
Agregar valores JSON por claves

Tengo un montón de resultados de encuestas dinámicas almacenados en una tabla con una columna JSON que se ve así:

 {"regional":"never","local":"sometimes","personal":"often","bike":"field_4","walk":"field_5","carpool":"field_4","carshare":"often","rideshare":"sometimes"}

Las claves son valores que existen dinámicamente en todo el conjunto de datos. Necesito encontrar una forma eficiente de agregar las claves y contar los resultados correlacionados. Estos datos representan una pregunta de encuesta de escala Likert, es decir.

"¿Con qué frecuencia va a la estación de autobuses? Pocas veces, a veces, muy a menudo"

El conjunto de datos resultante que me gustaría producir es:

 { "regional": { "sometimes": 20, "often": 10, "never": 5 }, "bike": { "sometimes": 20, "often": 10, "never": 5 } "walk": { "sometimes": 20, "often": 10, "never": 5 } }

Intenté JSON_EACH para dividir los valores en pares clave/valor, pero ahora tengo problemas para agregar las claves y la frecuencia de los posibles resultados. Esto es lo que tengo hasta ahora:

 SELECT json_data.key, json_data.value FROM "SubmissionData" AS sd, JSON_EACH_TEXT(sd.data) AS json_data WHERE sd.key = 'transit'

Sin embargo, definitivamente se topó con un obstáculo aquí.

Gracias.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Use json_object_agg() , por ejemplo:

 with my_table(data) as ( values ('{"regional":"never","local":"sometimes","personal":"often"}'::json), ('{"regional":"often","local":"sometimes","personal":"often"}'::json) ) select json_object_agg(key, vals) from ( select key, json_object_agg(value, count) vals from ( select key, value, count(*) from my_table, json_each_text(data) group by 1, 2 ) s group by 1 ) s; json_object_agg ------------------------------------------------------------------------------------------------------------ { "regional" : { "never" : 1, "often" : 1 }, "personal" : { "often" : 2 }, "local" : { "sometimes" : 2 } } (1 row)
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!