У меня есть таблица со следующей схемой:
Order_id customer_Id purchaseDate movie_Id minutesStreamed
01 C1 1/1/2000 P1 100
02 C2 1/1/2002 P2 90
03 C3 4/1/2002 P3 93
04 C4 4/1/2003 P1 99
05 C4 1/1/2006 P2 99
06 C1 5/1/2006 P5 89
07 C4 12/1/2017 P5 89
08 C3 3/3/2018 P1 145
09 C4 3/3/2018 P6 147
Я хочу найти тех клиентов, которые смотрят все меньше и меньше минут каждый раз, когда смотрят фильм, т. Е. Их второй поток меньше 1-го, а их 3-й меньше их 2-го и т. Д. И т. Д.
Я знаю, как найти один случай, т. Е. 3-й <2-й или 2-й <1-й, но как проверить все комбинации. </p>
select a.*
from
(
select customer_id,purchase_date,minutes_streamed, lag(minutes_streamed,1) over (partition by customer_id order by purchase_date) prev_mins_streams
from orders
)a
inner join
(select customer_id,max(purchase_date) max_purchase_dt from orders group by customer_id) b
on a.customer_id=b.customer_id
and a.purchase_date=b.max_purchase_dt
where a.minutes_streamed<a.prev_mins_streams
;