Tengo esta tabla:
Movies (ID, Genre)
Una película puede tener múltiples géneros, por lo que una identificación no es específica de un género, es una relación de muchos a muchos. Quiero una consulta para encontrar el número total de películas que tienen exactamente 4 géneros. La consulta actual que tengo es
SELECT COUNT(*) FROM Movies GROUP BY ID HAVING COUNT(Genre) = 4
Sin embargo, esto me devuelve una list de 4 en lugar de la sum total. ¿Cómo obtengo la sum total en lugar de una list de count(*)
?
Una forma sería usar una consulta anidada:
SELECT count(*) FROM ( SELECT COUNT(Genre) AS count FROM movies GROUP BY ID HAVING (count = 4) ) AS x
La consulta interna obtiene todas las películas que tienen exactamente 4 géneros, luego la consulta externa count cuántas filas devolvió la consulta interna.
SELECT COUNT(*) FROM (SELECT COUNT(*) FROM movies GROUP BY id HAVING COUNT(genre) = 4) t
Tal vez
SELECT count(*) FROM ( SELECT COUNT(*) FROM Movies GROUP BY ID HAVING count(Genre) = 4 ) AS the_count_total
aunque esa no sería la sum de todas las películas, solo cuántas tienen 4 géneros.
Entonces quizás quieras
SELECT sum( SELECT COUNT(*) FROM Movies GROUP BY ID having Count(Genre) = 4 ) as the_sum_total
Qué pasa:
SELECT COUNT(*) FROM (SELECT ID FROM Movies GROUP BY ID HAVING COUNT(Genre)=4) a