--简单写法,group by 加上datediff select tb.cid, count(pb.id) as pv, sum(timestampdiff(minute,start_time,end_time)) as time_len from play_record_tb pb inner join course_info_tb tb on pb.cid=tb.cid where datediff(date(start_time),date(release_date))<=6 group by tb.cid having avg(score)>=3 order by pv desc,time_len desc limit 3