Я два дня в MySQL.Работая над базой данных фильмов, я решил попытаться ответить на конкретный вопрос: какие фильмы из списка 1000 приносят отрицательную прибыль, но имеют оценку IMDB от 8 до 9?
В идеале я хотелчтобы вернуть только список фильмов, которые соответствуют этим критериям, но сначала я не знал утверждения WHERE
.Поэтому я использовал CASE
, чтобы я мог просто пометить эти фильмы 'Quality Anomaly'
.Затем, когда я узнал о WHERE
, я реализовал его.Однако результаты были разные.Запрос с использованием CASE
помечал только 6 фильмов, а запрос с использованием WHERE
возвращал 51 фильм (ряды).Я добавил соответствующие столбцы, чтобы проверить, правильно ли это, и все проверено, но есть что-то странное.Когда я делаю запрос SELECT *
, чтобы вернуть все фильмы, многие пропускают из полного списка 1000, которые находятся в списке 51 из запроса, используя WHERE
.Вот код:
/ ** Этот запрос должен возвращать все заголовки фильмов с указанием прибыли от фильма, или «Аномалия качества», если прибыль отрицательна, а показатель imdb находится между 8 и 9. Этоуказывает только «Качественная аномалия» для 6 фильмов.** /
select
movie_title,
imdb_score,
case
when (gross < budget) and (imdb_score between 8 and 9) then 'Quality Anomaly'
else gross - budget
end as profit
from movies;
/ ** Предполагается, что в следующем запросе будут перечислены только фильмы, которые удовлетворяют условию 'Quality Anomaly'
, описанному выше, но вместо возврата только 6 фильмов возвращается 51. ** /
select
movie_title,
(gross - budget) as profit,
imdb_score
from movies
where (gross < budget) and (imdb_score between 8 and 9);
Ссылка на выходные данные через github.