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