Работали над этим вопросом пару часов и подошли близко, но все еще не смогли получить желаемых результатов.Вот вопрос ниже:
Для всех фильмов, которые имеют средний рейтинг 4 звезды или выше, добавьте 25 к году выпуска.(Обновите существующие строки; не вставляйте новые строки.).
Таблицы, необходимые для этого запроса, находятся в другом вопросе, который я уже разместил здесь, на Как получить результатыэтот конкретный «запрос» .Названия таблиц: «фильм» и «рейтинг».Там вы также можете увидеть некоторый SQL-код, если он поможет.
Первый шаг, который я предпринял для решения этой проблемы, - это (очевидно) поиск фильмов со средним рейтингом 4 звезды или выше.Я сделал это с помощью следующего запроса:
SELECT movie.mid, aveMovieRating
FROM movie JOIN(
SELECT DISTINCT(rating.mid),
COUNT(mid) AS "Number of movies",
SUM(stars) AS "Total no# of stars",
(SUM(stars)*1.0/COUNT(mid)) AS aveMovieRating
FROM rating
GROUP BY mid
) AS aveRating
ON movie.mid = aveRating.mid
WHERE aveMovieRating >= 4
Затем я подошел к хитрой части - пытаясь изменить год выпуска в соответствии с требованиями вопроса ... Это запрос, который я придумал для попытки:
UPDATE movie
SET year = (year + 25)
WHERE movie.mid IN(
SELECT movie.mid, aveMovieRating
FROM movie JOIN(
SELECT DISTINCT(rating.mid),
COUNT(mid) AS "Number of movies",
SUM(stars) AS "Total no# of stars",
(SUM(stars)*1.0/COUNT(mid)) AS aveMovieRating
FROM rating
GROUP BY mid
) AS aveRating
ON movie.mid = aveRating.mid
WHERE aveMovieRating >= 4)
При выполнении вышеуказанного запроса в SQLite возникает следующая ошибка SQL:
Ошибка: для SELECT, являющегося частью выражения * 1020, допускается только один результат
Это была моя первая попытка «сложного» вопроса без посторонней помощи, но эта ошибка отбросила меня.Если кто-то сможет помочь мне изменить приведенный выше запрос и дать несколько советов об этом типе проблемы, это было бы здорово:).