Я пытаюсь выполнить анализ тренда в PL SQL, используя для l oop вложенный внутри курсора для l oop. Цель состоит в том, чтобы вернуть актера между годами (2000–2013), которые снимались как минимум в 8 фильмах в течение пятилетнего периода.
Например, желаемым результатом будет: Уолберг, Марк сыграл в 10 фильмы между 2009 и 2013 годами. Вот ошибка, которую я получаю:
Вот код, с которым я работаю до сих пор:
DECLARE
t movie.yr%TYPE;
actor_id actor.id%TYPE;
total INTEGER;
name actor.name%TYPE;
CURSOR c_actor IS
select *
from (select actor.name AS name, count(movie.title) AS total
from actor, movie, casting
where movie.id = casting.movie_id
and actor.id = casting.actor_id
and movie.yr >= 2000 and movie.yr <=2013
group by actor.name
order by count(movie.title) DESC)
where rownum <= 10;
BEGIN
for v_actor in c_actor
LOOP
for t in 2000 .. 2009
LOOP
select name, total
into name, total
from actor, movie
where movie.yr between t and t+4
and actor_id = v_actor.actor_id
and total >= 8
group by name;
dbms_output.put_line(name||' played in '||total||' movies between '||t||' and '||t+4);
END LOOP;
END LOOP;
END;