найти более низкий рейтинг последующих фильмов - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть таблица фильмы и еще одна, называемая директоры со следующими атрибутами:

Movies               Director
------              -----------
title               name
director            country
year
genre
rating

Я пытаюсь найти фильмы того же режиссера, которыйимел более низкий рейтинг, чем любой последующий фильм того же режиссера.Это мой запрос:

SELECT * 
FROM movies m1
JOIN directors d ON m1.director=d.name 
WHERE EXISTS
    (
    SELECT * 
    FROM movies m2 
    WHERE (m1.rating<m2.rating 
    AND m1.year<m2.year)
    AND m1.director=m2.director
    );

Я ожидал бы такие результаты, как:

movie1    director1    rating-2   year1
movie2    director1    rating-4   year2
movie3    director1    rating-2   year4
movie4    director1    rating-4   year7

Однако вместо этого я получаю:

movie1    director1    rating 2   year1
movie2    director1    rating 4   year2
movie3    director1    rating-4   year4
movie4    director1    rating-2   year7

Я недумаю, что это правильный способ сделать это.:(

1 Ответ

0 голосов
/ 27 ноября 2018

Вы хотите локальный минимум.,,но наоборот.

select m.*
from (select m.*,
             min(m.rating) over (partition by m.director order by m.year desc rows between unbounded preceding and 1 preceding) as min_future_rating
      from movies m
     ) m
where rating < min_future_rating;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...