es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

CLAUSULA WHERE con JOIN SQL

SELECT AVG(score) AS avg_score, st.name
FROM firstTable AS ft
LEFT JOIN secondTable AS st
ON ft.dog_id = st.dog_id
WHERE (SELECT COUNT(ft.dog_id) FROM firstTable) > 1
GROUP BY dog_id

La cláusula WHERE no parece hacer nada. ¿Por qué es eso? – Básicamente estoy tratando de mostrar el promedio de puntuación solo para los perros que aparecen más de una vez en la primera tabla.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    La cláusula where está utilizando una subconsulta para contar el número de filas en la primeraTabla. Esta cuenta no tiene en cuenta ningún filtro o agrupamiento que pueda ocurrir en la consulta principal, por lo que siempre se evaluará como un valor constante (el número total de filas en la primeraTabla). Como resultado, la cláusula where no tiene ningún efecto en la salida de la consulta, y el promedio de puntuación se calculará y agrupará por dog_id independientemente de su frecuencia de aparición en la primeraTabla. Para mostrar solo los perros que aparecen más de una vez en la primera tabla, la cláusula GROUP BY debería ser cambiada a GROUP BY ft.dog_id HAVING COUNT(ft.dog_id) > 1, lo que agrupará los resultados por dog_id y filtrará cualquier grupo con un recuento inferior a 2.

Comments are closed.