Intereting Posts
Когда я ввожу код dateadd или датированный, я получаю эту ошибку все время «ORA-00904» DATEADD «INVALID IDENTIFIER». SQL Преобразование столбца в строку Как заменить неправильное значение поля наиболее распространенным значением на основе столбца идентификатора в SQL? Выбор партитурных совпадений (только для полных слов) Выбор Oracle JDBC с возвратом WHERE 0 Как разделить содержимое ячейки и извлечь информацию в новый столбец в инструкции выбора SQL? Как объявить скалярную переменную? Как вставить данные в базу данных Microsoft Access? Вызов Sybase Adaptive Server Enterprise «sp_help» из JDBC Почему в схеме базы данных WordPress не используются внешние ключи? Можно ли получить несколько значений из подзапроса? SQL-AS-таблица не существует – 1146 Как я могу получить dict из запроса sqlite? Как разбить значение столбца на условие «IN»? Поставщик профилей ASP.NET SQL. Использует ли метод ProfileBase.Create () доступ к базе данных?

Поиск среднего рейтинга каждого фильма.

В настоящее время я занимаюсь онлайн-классом standford в базах данных. Если бы вы могли помочь мне решить эту проблему sql, я был бы очень признателен. Извините, я полный noob.

Настольный фильм:

mID | title | year | director 

Рейтинг таблицы

 rID | mID | stars | ratingDate 

Рецензент таблицы

 rID | name 

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

Хорошо. Вы действительно задали два разных вопроса.

Во-первых, я отвечу на вопрос, который вы задали в заголовке сообщения.

Это должно сработать.

 select Movie.title, avg(Rating.stars) as AR from Rating join Movie on Rating.mID = Movie.mID group by Movie.title order by AR desc 

Если вы не укажете предложение «on» в соединении, например,

 select Movie.title, avg(Rating.stars) as AR from Rating join Movie group by Movie.title order by AR desc 

то все фильмы будут иметь тот же рейтинг, средний по всему миру, из-за полного перекрестного продукта соединения. Вы хотите внутреннее соединение по имени или, в данном случае, id.

Во-вторых, вот ответ на другой вопрос, который вы задали, о парах рецензентов. R1.name < R2.name гарантирует, что имена рецензента будут отсортированы слева направо. и order by R1.name гарантирует, что эти пары будут отсортированы сверху вниз.

 select distinct R1.name, R2.name from Rating Ra1 join Rating Ra2 join Reviewer R1 join Reviewer R2 where Ra1.mID = Ra2.mID and Ra1.rID != Ra2.rID and R1.name < R2.name and Ra1.rID = R1.rID and Ra2.rID = R2.rID order by R1.name 

Это поможет вам начать.

 SELECT m.*, ra.*, re.* FROM Movie m JOIN Rating ra ON ra.mID = m.mID JOIN Reviewer re ON re.rID = ra.rID