with
t1 as(
select
uid,
cid,
release_date,
count(uid) as watch_times
from
play_record_tb left join course_info_tb using(cid)
group by
uid,
cid,
release_date
having
count(uid)>=2
)
,t2 as(
select
cid,
release_date,
sum(watch_times) as pv
from
t1
group by
cid,
release_date
)
,t3 as(
select
cid,
release_date,
pv,
rank()over(order by pv desc,release_date desc,cid) as rk
from
t2
order by
rk
)
select
cid,
pv,
rk
from
t3
where
rk<=3
order by
rk

京公网安备 11010502036488号