题解 | #平均播放进度大于60%的视频类别#
平均播放进度大于60%的视频类别
https://www.nowcoder.com/practice/c60242566ad94bc29959de0cdc6d95ef
select t1.tag, ## 先将小数乘以100,再利用cast函数转换数据格式,利用decimal设置为两位小数,最后在利用concat函数拼接上百分号 concat(cast(avg(process)*100 as Decimal(16,2)) ,"%") `avg_play_progress` from ( select ##选出后面需要的字段 ## 以下两个字段推荐提交不用,但是测试最后带一下,好检查问题 tuvl.start_time, tuvl.end_time, ## 算出该用户这次看某个视频的连续时间(为了和后面视频时间做比较) unix_timestamp (end_time) - unix_timestamp (start_time) `subtime`, tvi.duration, ## 计算播放进度(判断是不是超过了视频的时间,如果超过设置为1) if((unix_timestamp (end_time) - unix_timestamp (start_time))/tvi.duration>1,1,(unix_timestamp (end_time) - unix_timestamp (start_time))/tvi.duration) `process`, tvi.tag from tb_user_video_log tuvl ## 直接内连接,减少数据量 inner join tb_video_info tvi on tuvl.video_id = tvi.video_id ) t1 ## 按照视频分组 group by t1.tag having avg(process)>0.6 ## 按照视频播放率降序排序 order by avg_play_progress desc#纯粹的学习分享##求大佬指教#