Mysql count, имея
У меня есть эта таблица:
Movies (ID, Genre)
У фильма может быть несколько жанров, поэтому идентификатор не является специфичным для жанра, это отношение многих к многим. Мне нужен запрос, чтобы найти общее количество фильмов, которые имеют ровно 4 жанра. Текущий запрос, который у меня есть,
SELECT COUNT(*)
FROM Movies
GROUP BY ID
HAVING COUNT(Genre) = 4
Однако это возвращает мне список из 4 вместо общей суммы. Как получить суммарную сумму вместо списка count(*)
?
Ответы
Ответ 1
Один из способов - использовать вложенный запрос:
SELECT count(*)
FROM (
SELECT COUNT(Genre) AS count
FROM movies
GROUP BY ID
HAVING (count = 4)
) AS x
Внутренний запрос получает все фильмы, которые имеют ровно 4 жанра, а затем внешний запрос подсчитывает, сколько строк возвращает внутренний запрос.
Ответ 2
SELECT COUNT(*)
FROM (SELECT COUNT(*)
FROM movies
GROUP BY id
HAVING COUNT(genre) = 4) t
Ответ 3
Возможно
SELECT count(*) FROM (
SELECT COUNT(*) FROM Movies GROUP BY ID HAVING count(Genre) = 4
) AS the_count_total
хотя это не было бы суммой всех фильмов, сколько у них было 4 жанра.
Так что, возможно, вы хотите
SELECT sum(
SELECT COUNT(*) FROM Movies GROUP BY ID having Count(Genre) = 4
) as the_sum_total
Ответ 4
Как насчет:
SELECT COUNT(*) FROM (SELECT ID FROM Movies GROUP BY ID HAVING COUNT(Genre)=4) a