select
pt.cid cid
,count(*) pv
,sum(timestampdiff(minute, start_time, end_time)) time_len
from play_record_tb pt
join course_info_tb ct
on pt.cid = ct.cid
where timestampdiff(day, release_date, date(start_time)) <= 7
group by cid
having avg(score) >= 3
order by pv desc,time_len desc
limit 3