select t1.tag, concat(ROUND(avg(if(timestampdiff(second,t.start_time,t.end_time)>=t1.duration,1, timestampdiff(second,t.start_time,t.end_time)/t1.duration))*100,2),'%') as avg_play_progress from tb_video_info t1 join tb_user_video_log t on t1.video_id=t.video_id group by t1.tag having avg_play_progress>60 order by avg_play_progress desc;
1、播放进度结算
①、时间差函数,timestampdiff(unit,char(begin-end))
②、判断,if或者用case when
③、结果保留两位小数,使用round(xx,2)
④、使用concat拼接数值和“%”
2、多表的内连接。
3、进度大于60%的类别输出,因为这个数值是聚合函数,需要使用having函数
4、并按播放进度倒序排序。使用order by desc