Два метода запроса дают разные результаты - PullRequest
1 голос
/ 31 марта 2019

Я два дня в 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...