Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

143
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda