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

432
Visualizações
¿Cómo sumar ocurrencias de niños de una tabla de unión en Postgres?

Necesito contar cuántos consultants están usando una skill a través de una tabla de combinación ( consultant_skills ), y el desafío es sumar recursivamente las ocurrencias de los niños a los padres.

Aquí está la reproducción de lo que estoy tratando de lograr. Los resultados actuales son:

 skill_id | count 2 | 2 3 | 1 5 | 1 6 | 1

Pero necesito calcular el conteo de los padres recursivamente, donde el resultado esperado sería:

 skill_id | count 1 | 2 2 | 2 3 | 1 4 | 2 5 | 2 6 | 1

¿Alguien sabe cómo puedo hacer eso?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Solución Sqlfiddle

Debe usar WITH RECURSIVE , como sugiere Mike. Su respuesta es útil, especialmente en referencia al uso de distinct para eliminar recuentos redundantes para consultores, pero no conduce a los resultados exactos que está buscando.

Vea la solución de trabajo en el sqlfiddle anterior. Creo que esto es lo que estás buscando:

 WITH RECURSIVE results(skill_id, parent_id, consultant_id) AS ( SELECT skills.id as skill_id, parent_id, consultant_id FROM consultant_skills JOIN skills on skill_id = skills.id UNION ALL SELECT skills.id as skill_id, skills.parent_id as parent_id, consultant_id FROM results JOIN skills on results.parent_id = skills.id ) SELECT skill_id, count(distinct consultant_id) from results GROUP BY skill_id ORDER BY skill_id

Lo que sucede en la consulta debajo de UNION ALL es que estamos uniendo recursivamente la tabla de habilidades a sí misma, pero rotando la identificación principal anterior como la nueva identificación de habilidad y usando la nueva identificación principal en cada iteración. La recursividad se detiene porque eventualmente la identificación principal es NULL y no hay JOIN porque es una unión INTERNA. Espero que tenga sentido.

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