2017-01-31 3 views
2

I create this using the following:, имеющий более чем одно значение MAX

SELECT genre, count(movie_id) FROM movies_genres 
GROUP BY genre 
ORDER BY count(movie_id) DESC; 

Моя цель состоит в том, чтобы иметь жанр кино, который появляется самый, который первые два жанра. Я искал вокруг, и большинство ответов используют «LIMIT 1», но я думаю, что в этом случае это не сработает. Я пробовал MAX(), но я не знаю, как отобразить колонку жанра.

Пожалуйста, сообщите, спасибо.

+0

Возможный дубликат [Возврат всех строк со значением "MAX" в SQL?] (Http://stackoverflow.com/questions/12167809/return-all-rows-with-the-max-value-in-sql) – shmosel

+0

@GurV OP хочет * все * максимальные значения. Это может быть любое количество строк. – shmosel

+0

@ Шерри, какие столбцы вам нужны в конечном выпуске? может несколько жанров для одного и того же идентификатора фильма? – TRiNE

ответ

1

Один из способов - найти максимальное количество, а затем использовать предложение, чтобы получить все жанры с этим счетом.

select genre 
from movie_genres 
group by genre 
having count(movie_id) = (
    select max(cnt) 
    from (
     select count(movie_id) cnt 
     from movie_genres 
     group by genre 
    ) t 
) 
0

Будет ли это давать все значения, которые вы хотите? Сначала создайте коллекцию, которую вы хотите. Затем используйте WHERE IN, чтобы получить вывод, который вы хотите

SELECT genre FROM movie_genres 
WHERE movie_id IN (
    SELECT max(movie_id) FROM movies_genres 
    GROUP BY genre 
) 
0
SELECT genre,count(*) 
FROM movie_genres 
GROUP BY genre 
HAVING count(*) = (
    SELECT count(movie_id) 
    FROM movie_genres 
    GROUP BY genre 
    ORDER BY 1 DESC LIMIT 1 
) 

enter image description here

Смежные вопросы