У меня есть представление sql, скажем emp_table
, которое выглядит следующим образом:
+----------+----------+------+
| actor_id | movie_id | year |
+----------+----------+------+
| 2 | 280088 | 2002 |
| 2 | 396232 | 2000 |
| 3 | 376687 | 2000 |
| 4 | 336265 | 2001 |
| 5 | 135644 | 1953 |
| 6 | 12083 | 1996 |
| 7 | 252053 | 1993 |
| 7 | 402635 | 1992 |
| 7 | 409592 | 1995 |
| 8 | 101866 | 2000 |
| 9 | 336265 | 2001 |
| 10 | 12148 | 2000 |
| 11 | 80189 | 2001 |
| 12 | 12148 | 2000 |
| 13 | 80189 | 2001 |
| 14 | 70079 | 1982 |
| 15 | 12148 | 2000 |
| 16 | 242675 | 1991 |
| 17 | 105231 | 1993 |
| 17 | 242453 | 1988 |
+----------+----------+------+
... и так далее.Мне нужно найти всех actor_id
, у которых никогда не было отставания в карьере более 3 лет.Это значит, что мне нужно рассчитать всех актеров, для которых, если я вычислю количество уникальных лет, в которых они снимались в фильме, а затем отсортирую их, то максимальная последовательная разница между годами никогда не будет превышать 3 года.Пожалуйста, помогите мне с этим SQL-запросом.Я пробовал sql self join, но не мог больше об этом думать.
Весь код SQL предназначен только для MySQL.
Примечание Вы можете считать, что есть толькоодна комбинация actor_id и movie_id.
Ожидаемый результат
+----------+----------+
| actor_id | max_gap |
+----------+----------+
| 2 | 2 |
| 3 | 0 |
| 4 | 0 |
| 5 | 0 |
| 6 | 0 |
| 7 | 2 |
| . | . |
| . | . |
| . | . |
| 17 | 5 |
+----------+----------+
И так далее
Примечание 2: Извините затак много изменений в выводе.Это окончательная версия, и после этого больше нет изменений.