Подтвердить что ты не робот

Mysql count, имея

У меня есть эта таблица:

Movies (ID, Genre)

У фильма может быть несколько жанров, поэтому идентификатор не является специфичным для жанра, это отношение многих к многим. Мне нужен запрос, чтобы найти общее количество фильмов, которые имеют ровно 4 жанра. Текущий запрос, который у меня есть,

  SELECT COUNT(*) 
    FROM Movies 
GROUP BY ID 
  HAVING COUNT(Genre) = 4

Однако это возвращает мне список из 4 вместо общей суммы. Как получить суммарную сумму вместо списка count(*)?

4b9b3361

Ответ 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