题解 | #(正常思路)各个视频的平均完播率#
各个视频的平均完播率
https://www.nowcoder.com/practice/96263162f69a48df9d84a93c71045753
关于日常概率,差值问题最先应该抓取所需的字段,然后配合group by 聚合函数求和,做差
1 使用到函数
sum(if( 条件 ,1,0 )) 配合group by ,工作中经常使用到的
2 其他函数
cast() 在格式转换,经常使用到的
3 最后不通数据库执行顺序总结
mysql : from where XX group by XX having select order by
hive : from where XX group by XX select order by having order by
最后放上答案:
SELECT
a.video_id,
cast((sum(if( ((a.end_time - a.start_time) >= b.duration) ,1,0 )) / count(1)) as decimal(10,3)) as vg
FROM
tb_user_video_log a
left join tb_video_info b on a.video_id = b.video_id
where year(start_time) = 2021
group by a.video_id , b.duration
order by vg desc