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

注意限定条件有个一周内 这个容易忽略