J'ai cette table:
Movies (ID, Genre)
Un film peut avoir plusieurs genres, de sorte qu'un identifiant n'est pas spécifique à un genre, c'est une relation plusieurs à plusieurs. Je veux une requête pour trouver le nombre total de films qui ont exactement 4 genres. La requête actuelle que j'ai est
SELECT COUNT(*)
FROM Movies
GROUP BY ID
HAVING COUNT(Genre) = 4
Cependant, cela me renvoie une liste de 4 au lieu de la somme totale. Comment puis-je obtenir la somme totale au lieu d'une liste de count(*)
?
Une solution serait d'utiliser une requête imbriquée:
SELECT count(*)
FROM (
SELECT COUNT(Genre) AS count
FROM movies
GROUP BY ID
HAVING (count = 4)
) AS x
La requête interne obtient tous les films ayant exactement 4 genres, puis la requête externe compte le nombre de lignes renvoyées par la requête interne.
SELECT COUNT(*)
FROM (SELECT COUNT(*)
FROM movies
GROUP BY id
HAVING COUNT(genre) = 4) t
Peut être
SELECT count(*) FROM (
SELECT COUNT(*) FROM Movies GROUP BY ID HAVING count(Genre) = 4
) AS the_count_total
bien que ce ne soit pas la somme de tous les films, combien ont 4 genres.
Alors peut-être que tu veux
SELECT sum(
SELECT COUNT(*) FROM Movies GROUP BY ID having Count(Genre) = 4
) as the_sum_total
Qu'en est-il de:
SELECT COUNT(*) FROM (SELECT ID FROM Movies GROUP BY ID HAVING COUNT(Genre)=4) a