【SQL】 各个视频的平均完播率

这篇具有很好参考价值的文章主要介绍了【SQL】 各个视频的平均完播率。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【问题】

计算2021年里有播放记录的每个视频的完播率(结果保留三位小数),并按完播率降序排序。

【数据】

用户-视频互动表tb_user_video_log
(uid-用户ID, video_id-视频ID, start_time-开始观看时间, end_time-结束观看时间, if_follow-是否关注, if_like-是否点赞, if_retweet-是否转发, comment_id-评论ID)

短视频信息表tb_video_info
(video_id-视频ID, author-创作者ID, tag-类别标签, duration-视频时长(秒), release_time-发布时间)

输出示例数据:video_id,avg_comp_play_rate

【要点】

完播率 = 视频完成播放的次数 ( e n d . t i m e − s t a r t . t i m e > = d u r a t i o n ) 视频总的播放次数 完播率=\dfrac{视频完成播放的次数(end.time- start_.time>=duration)}{视频总的播放次数} 完播率=视频总的播放次数视频完成播放的次数(end.timestart.time>=duration)

  • 保留三位小数 round(x,3)
  • 时间相减 timestampdiff(second,a.start_time,a.end_time)
  • 左连接 left join ,相当于将视频信息添加到互动表中,方便比较播放时长和视频时长
  • 完播率是对同一个视频拥有的多条记录进行计算,因此分组计算 group by video_id
  • 分组要对应聚合函数,可以使用sum,avg 等,实现这个计算逻辑即可
  • 降序排列 order by 列名 desc ,不加 desc 默认升序
  • 注意题目中有关时间的限定(2021年)

【解答】

select b.video_id,
       round(avg(timestampdiff(second,a.start_time,a.end_time)>=b.duration),3) as avg_comp_play_rate
from tb_user_video_log a left join tb_video_info b on a.video_id=b.video_id
where year(a.start_time)=2021
group by b.video_id
order by avg_comp_play_rate desc

完播率的以下几种计算都是可以的,但是第一种最为简洁:文章来源地址https://www.toymoban.com/news/detail-508712.html

avg(timestampdiff(second,a.start_time,a.end_time)>=b.duration)
sum(timestampdiff(second,a.start_time,a.end_time)>=b.duration)/count(*)
sum(if(timestampdiff(second,a.start_time,a.end_time)>=b.duration,1,0))/count(*)

到了这里,关于【SQL】 各个视频的平均完播率的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [SQL挖掘机] - 窗口函数 - 计算移动平均

    在窗口函数使用时,计算的是累积到当前行的所有的数据的相关操作。 实际上,还可以指定更加详细的汇总范围。该汇总范围称为 框架 (frame)。 其实这里也可以理解成一个 窗口 , 这个 窗口 是我们可以进行设置的. 之前我们介绍的窗口函数是根据 partition by 进行分组, 然后根

    2024年02月14日
    浏览(38)
  • 【数据分析面试】10. 计算平均通勤时间(SQL:timestampdiff() 和datediff()区别)

    假设你在Uber工作。 rides 表包含了关于Uber用户在美国各地的行程信息。 编写一个查询,以获取纽约(NY)每位通勤者的平均通勤时间(以分钟为单位),以及纽约所有通勤者的平均通勤时间(以分钟为单位)。 示例: 输入: rides 表 列名 类型 id INTEGER commuter_id INTEGER start_dt

    2024年04月09日
    浏览(89)
  • C++编程计算平均数、众数和中位数,可以快速解决计算问题

    说明 求N个整数的平均数,众数和中位数。 小知识: 众数 如有9个数:17 13 17 9 17 17 3 16 17 17出现的次数最多,即为这组数的众数。 此题保证众数是唯一的。 中位数 如有9个数:102 170 96 90 97 106 110 182 100 将这9个数按一定的顺序(从大到小或从小到大)排列后得到: 182 170 110

    2024年02月07日
    浏览(75)
  • 李宏毅2021春季机器学习课程视频笔记5-模型训练不起来问题(当梯度很小的时候问题)

     求解最小Loss的失败,不能得到最优的值,找不到Loss足够小的值。  1.Loss关于参数的梯度为0,不能继续更新参数。(local minima 或者 saddle point) 如何知道走到了哪个点?  利用泰勒展开:   Critical Point 的一阶导数为 0 。    举例子( Example ):    不需要担心 Saddle Point ,

    2023年04月09日
    浏览(51)
  • 大数据之指标计算(6) -- 编写Hive SQL代码,根据dwd层dwd.fact_environment_data表,统计检测设备的每月平均湿度与厂内检测结果做对比存入Mysql数据库中

      本题来源于全国职业技能大赛之大数据技术赛项工业数据处理赛题 - 离线数据处理 - 指标计算 注:由于个人设备问题,代码执行结果以及最后数据显示结果将不会给出。   提示:以下是本篇文章正文内容,下面案例可供参考(使用Scala语言编写)   涉及组件:Hive 涉及知

    2024年02月08日
    浏览(56)
  • sql高频面试题-去除最高最低的平均

    面试或者笔试的过程中会设定各种各样的场景,在这些场景下考查我们SQL的查询能力,但是万变不离其宗,业务场景只是一个表现形式,抽象为SQL问题后其实基本上就是几类问题: 计算累计、连续,分类TopN等 。只要掌握这些问题的解法,并且可以举一反三,并不需要盲目的

    2024年02月13日
    浏览(58)
  • 题解 | #平均播放进度大于60%的视频类别#

    研究生无聊帮大家做了一个远程面试工具 Google暑期实习技术面一面 朋友因骂了hr,boos被封了哈哈哈 华为上海青浦研究所现状 双非硕中了一篇aaai,目前手上有一个c++的offer, 春招是继续冲开发还是有机会算法呢? 朋友因骂了hr,boos被封了哈哈哈 天津就业求职好公司及薪资汇

    2024年02月02日
    浏览(27)
  • 一条SQL如何被MySQL架构中的各个组件操作执行的?

    简单用一张图说明下, MySQL 架构有哪些组件,接下来给大家用 SQL 语句分析 假如 SQL 语句是这样 SELECT class_no FROM student WHERE name = \\\'lcy\\\' AND age 18 GROUP BY class_no 其中 name 为索引,我们按照 时间顺序 来分析一下 客户端:客户端(如 MySQL 命令行工具、 Navicat 、 MySQL Workbench 或其他应

    2023年04月22日
    浏览(52)
  • 视频高效剪辑,轻松平均分割视频,生成高质量M3U8

    您是否在处理视频剪辑时常常面临繁琐的切分工作?是否希望能够快速而精准地平均分割视频,并生成适用于在线播放的高质量m3u8文件?现在,我们的智能视频剪辑大师为您提供了一种简便而高效的解决方案!无需复杂操作,只需几步操作,您即可轻松实现视频切分和m3u8生

    2024年02月13日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包