Anda bisa mendapatkan harga 5 hari yang lalu menggunakan subquery yang berkorelasi. Bahkan, Anda bisa mendapatkan harga terbaru dengan cara yang sama. Jadi, ini mungkin jalan yang benar:
select s.*,
(select p.close
from prices p
where p.id = s.id
order by date desc
limit 1
) as Close,
(select p.close
from prices p
where p.id = s.id and p.date <= date(now()) - interval 5 day
order by date desc
limit 1
) as Close_5
from stocks s
having Close > Close_5;