SELECT video_id,ROUND(AVG(IF(TIMESTAMPDIFF(SECOND,start_time,end_time)>=duration,1,0)),3) AS avg_comp_play_rate FROM tb_user_video_log JOIN tb_video_info USING(video_id) WHERE YEAR(start_time)=2021 GROUP BY video_id ORDER BY avg_comp_play_rate DESC;
本题要点
1.关于完播率
完播率是完播次数与总的播放次数的比,与播放的具体时长无关,因此应将比较后的时间按照计数来将其参与运算
2.TIMESTAMPDIFF的用法
该函数用于计算两个时间戳只差:TIMESTAMPDIFF(unit, start_time, end_time)
其中unit可以是yearqurater,,month,day,hour,minute,second
3.保留三位小数
ROUND(x,3)
4.关于两个表的联结
会先执行FROM将两个表联结,联结时可使用USING确定联结键,在调用各列时不必须用表的索引。

京公网安备 11010502036488号