select * from( #2、根据展示结果挑选展示字段# select t1.tag, #2.1、①先求各tag中不同video的播放时长(timestampdiff(second,t2.start_time,t2.end_time)),若播放时长>视频本身时长(case when timestampdiff(second,t2.start_time,t2.end_time) > t1.duration),则返回播放进度100%(then 1,后面还会×100再转化成%形式),若不符合则返回播放时长本身/视频时长(timestampdiff(second,t2.start_time,t2.end_time)/t2.duration);②此外,由于刚才计算的是“各tag”中“不同video”的“播放进度(播放进度=播放时长÷视频时长)”,在此基础上,计算“各tag”的“平均播放进度”【avg((case when timestampdiff(second,t2.start_time,t2.end_time) > t1.duration then 1 else timestampdiff(second,t2.start_time,t2.end_time) / t1.duration end))】,③然后保留2位小数之后【round(xxx * 100,2)】,④将结果转换成%形式【concat(xxx,'%'),要提前*100】# ④concat(③round(②avg(①case when timestampdiff(second,t2.start_time,t2.end_time) > t1.duration then 1 else timestampdiff(second,t2.start_time,t2.end_time) / t1.duration end) * 100,2),'%') as avg_play_progress #1、确定需求来源的数据表(各类视频👉tag👉tb_video_info;播放进度=播放时长÷视频时长*100%👉播放时长=end_time-start_time👉tb_user_video_log)# from tb_video_info as t1 left join tb_user_video_log as t2 on t1.video_id = t2.video_id #3、按照t1.tag进行分组统计# group by 1) as t3 #4、“将进度大于60%的类别输出”👉“t3.avg_play_progress > '60.00%'”(注意:此处的百分数所在的字段格式为“字符”,因此需要用上引号括起来)# where t3.avg_play_progress > '60.00%' #5、对条件筛选后的数据按照t3.avg_play_progress从大到小进行排序# order by t3.avg_play_progress desc;