select
    ci.cid,
    count(*) as pv,
    sum(timestampdiff(MINUTE, start_time, end_time)) as time_len
from
    course_info_tb ci
    inner join play_record_tb pr on ci.cid = pr.cid
where
    timestampdiff(DAY, release_date, start_time) <= 7
group by
    ci.cid
having
    round(sum(score) / count(*), 2) >= 3.0
order by
    pv desc,
    time_len desc
limit 3;