select tuvl.video_id, cast(avg(if(timestampdiff(second,start_time,end_time)>=duration,1,0)) as decimal(10,3)) as avg_comp_play_rate from tb_user_video_log tuvl left join tb_video_info tvi on tuvl.video_id = tvi.video_id where year(start_time) = '2021' group by tuvl.video_id order by avg_comp_play_rate desc;
思路:
根据要求,求得的是完播率,完播率求解方式已告知,就简单的用时间进行相减就好。
需要注意点:
1、2021年,筛选条件一定要注意;
2、对于结果完成后,还要注意按照完播率进行排序;
3、计算时间差 可以使用TIMESTAMPDIFF(unit, start_datetime, end_datetime)
unit
:指定返回结果的单位,可以是以下值之一:MICROSECOND
(微秒)、SECOND
(秒)、MINUTE
(分钟)、HOUR
(小时)、DAY
(天)、WEEK
(周)、MONTH
(月)或YEAR
(年)。start_datetime
:指定的起始日期或时间戳。end_datetime
:指定的结束日期或时间戳。