题解 | #平均播放进度大于60%的视频类别#

平均播放进度大于60%的视频类别

https://www.nowcoder.com/practice/c60242566ad94bc29959de0cdc6d95ef

select tag,
concat(round(avg(if(timestampdiff(second, start_time, end_time) > duration, 1, timestampdiff(second, start_time, end_time) / duration)) * 100, 2), '%') avg_play_progress
from tb_user_video_log a left join tb_video_info b on a.video_id = b.video_id
group by tag
having avg(if(timestampdiff(second, start_time, end_time) > duration, 1, timestampdiff(second, start_time, end_time) / duration)) > 0.6
order by 2 desc

本人没有使用子查询,而是用表连接,直接对一整个大表进行查询;值得注意的是,保留两位小数的时候,应该先乘100再round,这样才能保证数值准确!以下是具体步骤:

  • 计算每条记录的播放进度,如果播放时长大于视频时长,则记为100%,否则计算实际播放进度。
  • 对每个标签的播放进度求平均值。
  • 将平均播放进度转化为百分比格式并保留两位小数。
  • 过滤出平均播放进度大于60%的标签。
  • 按照播放进度从高到低排序。
  • #sql#
    全部评论

    相关推荐

    真烦好烦真烦:牛友太有实力了
    点赞 评论 收藏
    分享
    评论
    1
    收藏
    分享

    创作者周榜

    更多
    牛客网
    牛客网在线编程
    牛客网题解
    牛客企业服务