2015-11-16 2 views
0

У меня есть moviedatabase со списком фильмов, которые содержат, название, год выпуска, рейтинг и т. Д. Я хочу соответствовать всем моим фильмам с самым высоким рейтингом, но проблема, с которой я сталкиваюсь с функцией max(), заключается в том, что она будет соответствовать только одному из моих самых рейтинговых фильмов. Так что я хотел бы получить все из моих самых рейтинговых фильмовSql MAX() Рейтинг функции фильмы

Для Exemple это хочу я получаю:

title || max(rating) 
Matrix   8 

Это то, что я хочу:

title || max(rating) 
Matrix   8 
Gladiator  8 
X-Men   8 

Мой код:

SELECT title, max(rating) 
FROM movies 
ORDER BY rating DESC 
+0

Вам повезло, что вы даже получили «Матрица», являясь одним из лучших названий. По вашему запросу вы могли бы выбрать любой заголовок, независимо от того, какой рейтинг. Причина. Пока вы говорите, какой рейтинг вы хотите (максимум), вы не говорите, какой титул, так что вы просто получаете случайный заголовок. (И тогда вы сортируете одну агрегированную запись по случайному рейтингу :-) –

+0

А, ок, я думаю, что я понял это сейчас. Спасибо, что помогли мне понять! :) – user3289402

ответ

4

Использование подзапроса:

SELECT title, rating 
FROM movies where rating = (select max(rating) from movies) 
+0

Может быть совпадением, что 'max (rating)' равно 8 для всех фильмов. И если он отличается, тогда ответ будет неверным. Я не уверен, но мое предположение :) –

+0

@RahulTripathi, вы уверены? Можете ли вы уточнить? –

+0

Как я уже сказал, я не уверен, просто предположение. : P (На самом деле путают с этой строкой 'Так что я хотел бы получить все свои самые рейтинговые фильмы ') –

0

попробовать это:

SELECT * 
FROM movies 
WHERE rating = (SELECT max(rating) 
        FROM movies) 
ORDER BY rating DESC 
Смежные вопросы