Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

136
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda