SQL学习,大厂面试真题(1):观看各个视频的平均完播率

各个视频的平均完播率

1、视频信息表

IDAuthorNameCategoryAgeStart Time
1张三影视302024-01-01 7:00:00
2李四美食602024-01-01 7:00:00
3王麻子旅游902024-01-01 7:00:00
(video_id-视频ID,  AuthorName-创作者, tag-类别标签, duration-视频时长(秒), release_time-发布时间)

2、视频互动表

IDGroupStart TimeEnd TimeStatusFlag1Flag2Value
112024-06-01 10:00:002024-06-01 10:00:30011null
212024-06-01 10:00:002024-06-01 10:00:24001null
312024-06-01 11:00:002024-06-01 11:00:340101
122024-09-01 10:00:002024-09-01 10:00:42101null
222024-06-01 11:00:002024-06-01 11:00:30101null
312024-06-01 12:00:002024-06-01 11:00:340101
(uid-用户ID, video_id-视频ID, start_time-开始观看时间, end_time-结束观看时间, if_follow-是否关注, if_like-是否点赞, if_retweet-是否转发, comment_id-评论ID)

问题:计算2024年里有播放记录的每个视频的完播率(结果保留三位小数),并按完播率降序排序
注:视频完播率是指完成播放次数占总播放次数的比例。简单起见,结束观看时间与开始播放时间的差>=视频时长时,视为完成播放。

SQL实现过程:

1、创建表和插入数据

CREATE TABLE dy_video_info (id INT PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',video_id INT UNIQUE NOT NULL COMMENT '视频ID',authorname VARCHAR(16) NOT NULL COMMENT '创作者ID',tag VARCHAR(16) NOT NULL COMMENT '类别标签',duration INT NOT NULL COMMENT '视频时长(秒数)',release_time datetime NOT NULL COMMENT '发布时间'
)CHARACTER SET utf8 COLLATE utf8mb3_general_ci;INSERT INTO dy_video_info(video_id, authorname, tag, duration, release_time) VALUES(1, '张三', '影视', 31, '2024-01-01 7:00:00'),(2, '李四', '美食', 65, '2024-01-01 7:00:00'),(3, '王麻子', '搞笑', 90, '2024-01-01 7:00:00');CREATE TABLE dy_user_video_log (id INT PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',uid INT NOT NULL COMMENT '用户ID',video_id INT NOT NULL COMMENT '视频ID',start_time datetime COMMENT '开始观看时间',end_time datetime COMMENT '结束观看时间',if_follow TINYINT COMMENT '是否关注',if_like TINYINT COMMENT '是否点赞',if_retweet TINYINT COMMENT '是否转发',comment_id INT COMMENT '评论ID'
) CHARACTER SET utf8 COLLATE utf8mb3_general_ci;INSERT INTO dy_user_video_log(uid, video_id, start_time, end_time, if_follow, if_like, if_retweet, comment_id) VALUES(1, 1, '2024-06-01 10:00:00', '2024-06-01 10:00:30', 0, 1, 1, null),(2, 1, '2024-06-01 10:00:00', '2024-06-01 10:00:24', 0, 0, 1, null),(3, 3, '2024-06-01 11:00:00', '2024-06-01 11:00:34', 0, 1, 0, 1),(1, 2, '2024-09-01 10:00:00', '2024-09-01 10:00:42', 1, 0, 1, null),(2, 2, '2024-06-01 11:00:00', '2024-06-01 11:00:30', 1, 0, 1, null),(3, 3, '2024-06-01 11:00:00', '2024-06-01 11:00:34', 0, 1, 0, 1);

a、先分析:
在这里插入图片描述
b、计算结束时间和开始时间的差值:


SELECT video_id ,end_time - start_time as avg_comp_play_rate
FROM dy_user_video_log ORDER BY  video_id

在这里插入图片描述
c、加入结束时间减开始时间大于30的记为1,其他的记为0

SELECT video_id,avg_comp_play_rate,IF(avg_comp_play_rate > 30, 1, 0) AS play_rate_result
FROM 
(SELECT video_id,(end_time - start_time) as avg_comp_play_rateFROM dy_user_video_log
) AS derived_table_name;

在这里插入图片描述

2、SQL实现效果

-- 选择视频ID和计算平均完成播放率
SELECT a.video_id, -- 选择视频的ID-- 计算平均完成播放率,四舍五入到小数点后三位round(-- 使用条件求和和计数函数计算完成播放率sum(if(-- 如果视频的结束时间减去开始时间大于等于视频的时长,则认为是完成播放end_time - start_time >= duration, 1, -- 完成播放记为10  -- 否则记为0)) / -- 将完成播放的个数除以总播放次数count(start_time), -- 计算总播放次数3 -- 四舍五入到小数点后三位) as avg_comp_play_rate -- 将计算结果命名为avg_comp_play_rate
FROM dy_user_video_log a -- 从dy_user_video_log表中选择数据,别名为a
-- 左连接dy_video_info表,别名为b,根据视频ID匹配
LEFT JOIN dy_video_info bon a.video_id = b.video_id
WHERE year(start_time) = 2024 -- 筛选出开始时间年份为2024的记录
GROUP BY a.video_id -- 根据视频ID分组
ORDER BY avg_comp_play_rate DESC; -- 按平均完成播放率降序排列

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/29443.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hadoop提交MR任务

MR作为Hadoop自带的计算框架所运行的任务,它本身通过hadoop jar提交 hadoop jar mr任务jar包路径 你要运行的类的全限定名 后面就是你需要传的参数但是有些时候你需要显示的修改指定这个任务运行时所用的资源数,就可以通过下面的命令指令 hadoop jar y…

六、在Qt下通过PCL在VTK9.3.0下显示自己的pcd点云文件

前几天刚整理好VTK8.2.0,发现我们的项目使用的PCL自带的VTK是9.3.0的,脸黑了快 VTK8.2.0可参考该篇博文:五、在Qt下加载QVTKWidget控件(VTK8.2.0),生成Visual Studio项目,显示点云(C…

玩转nRF52840-DK开发套件 (5) RTT打印调试日志

一、两种日志信息的输出方式 日志信息输出可以方便调试者观察程序运行状态,通常用串口 printf 来输出日志。nRF52840-DK也可以用仿真器 JLink 的 RTT Viewer 输出方式。 二、SDK_config.h配置 勾选相关项: 三、SDK_config.h配置 在主函数 main 中&#x…

给一家银行做的数据中台系统架构方案书(DAMM)招投标用,虽然有内定潜规则,但是方案都是要的,不一定就是价格低就能中标,毕竟是上百万以上的单子

目录 概述需求分析系统架构DAMM设计思路数据治理数据安全实施计划维护和运营 1. 概述 1.1 项目背景 在数字化转型的浪潮中,银行业面临着越来越多的数据挑战与机遇。为了更好地利用数据资产,提升服务质量和运营效率,建立一个高效、灵活的数…

HTML(7)——无语义的布局标签和字符实体

无语义的布局标签 作用&#xff1a;布局网页&#xff08;划分网页区域&#xff0c;摆放内容&#xff09; div&#xff1a;独占一行 span&#xff1a;不换行 字符实体 作用&#xff1a;在网页中显示预留字符 显示结果描述实体名称空格 <小于号<>大于号> 在代码中…

基于单片机的直流电机调速系统设计探讨

摘要 &#xff1a; 直流电动机制动性能与起动性能都较为理想&#xff0c;而且能够实现大范围的平滑调速&#xff0c;因而在电力拖动领域中的应用十分常见。 以控制角度分析&#xff0c;直流电机调速也成为交流拖动系统的重要基础 。 综合考虑直流电机转速测量和自动控制&#…

Ubuntu,Centos,Linux服务器安装Mellanox MCX653105A IB网卡HCA卡驱动

Mellanox 官方驱动下载地址 https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/ 选择对应操作系统 官方链接速度比较慢&#xff0c;推荐个友商的下载地址 https://support.xfusion.com/support/#/zh/rack-servers/2288h-v5-pid-21872244/software …

R语言数据分析案例31-运用差分整合移动平均自回归模型对世界主要国家(俄罗斯)的污染物排放量进行研究预测

一、研究背景与意义 空气污染导致的环境恶化已经成为世界各国许多国家和地区发展受限的重要原因。空气污染物是由气态物质、挥发性物质、半挥发性物质和颗粒物质的混合物造成的&#xff0c;其中典型 的空气污染物就是人们生活中经常使用到的高频词汇雾霾。本文主要对其中的污染…

AI发展面临的问题? —— AI对创造的重新定义

一、AI的问题描述 AI与数据安全问题&#xff1a;随着AI技术的发展和应用&#xff0c;数据安全问题日益突出。AI模型训练依赖于大量数据&#xff0c;而这些数据中可能包含个人隐私、商业秘密等敏感信息。如果数据在采集、存储、使用过程中处理不当&#xff0c;可能导致数据泄露或…

了解 XML HttpRequest 及其在 Web 开发中的应用

XML HttpRequest&#xff08;XHR&#xff09; 技术是构建动态、响应式网站的关键。这项技术使得网页能在不重新加载整个页面的情况下与服务器进行数据交互&#xff0c;极大地优化了用户的交互体验。 定义 XML HttpRequest XML HttpRequest 是一种浏览器与服务器进行数据交换的…

Vue3 状态管理 - Pinia,超详细讲解!

前言&#xff1a; 哈喽&#xff0c;大家好&#xff0c;我是前端菜鸟的自我修养&#xff01;今天给大家分享【Vue3 状态管理 - Pinia】&#xff0c;超详细讲解&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;原创不易&#xff0c;如果能帮助到带大…

Spring Security——添加验证码

目录 项目总结 新建一个SpringBoot项目 VerifyCode&#xff08;生成验证码的工具类&#xff09; WebSecurityController控制器 VerifyCodeFilter&#xff08;自定义过滤器&#xff09; WebSecurityConfig配置类 login.html登录页面 项目测试 本项目是以上一篇文章的项目…

由GetSymbol说起,安全研究员定向水坑技战法梳理

0x00 概述 最近&#xff0c;一款开源的调试符号下载工具GetSymbol被发现存在后门&#xff0c;允许攻击者下发执行恶意代码。谷歌TAG声称&#xff0c;攻击者目前正在积极利用至少一个0Day漏洞来针对安全研究人员。 近年来&#xff0c;针对安全研究人员的定向水坑和社工攻击屡见…

Shell 输入/输出重定向

Shell 输入/输出重定向 在Shell编程中&#xff0c;输入/输出重定向是一项非常强大且常用的功能。它允许用户将命令的输出从一个地方&#xff08;通常是终端&#xff09;重定向到另一个地方&#xff08;比如文件&#xff09;&#xff0c;或者将文件的内容作为某个命令的输入。这…

C语言中的共用体union关键字

一、简介 在C语言中&#xff0c;union关键字用于定义一种特殊的数据结构&#xff0c;称为共用体&#xff08;Union&#xff09;或联合体。共用体允许您在相同的内存位置存储不同数据类型的变量。这意味着在任何给定时间&#xff0c;共用体变量中只有一个成员真正存储着有效的数…

Android的布局有哪些?

在Android开发中&#xff0c;布局&#xff08;Layout&#xff09;是用户界面&#xff08;UI&#xff09;设计的重要组成部分&#xff0c;它决定了屏幕上组件&#xff08;如按钮、文本框等&#xff09;的排列和显示方式。Android提供了多种布局方式&#xff0c;每种布局都有其独…

为什么动态代理接口中可以不加@Mapper注解

为什么动态代理接口中可以不加Mapper注解 如下图&#xff1a; 我们上面的UserMapper上面没有加Mapper注解&#xff0c;按道理来说UserMapper这个类应该是注入不到IOC容器里面的&#xff0c;但是为什么我们程序的运行效果仍然是正常的呢&#xff1f;这是因为你的启动类上加了m…

Excel 组内多列明细拼成一行

某表格有 1 个分组列和 2 个明细列。 ABC1ObjectNameInfo212AGggtz44456312AGggtr99987412AKkkio66543512ABbvgf66643612AVvvhg888765712AFffgt8786FGggtf23232596FXxxde44321610P23Cccvb554328711P23Vvvbj565656412P23Sswec898976413P23Llloiu343432 现在要把组内的多列明细…

七大黄金原油短线操作技巧与方法

1、研究K线组合 K线组合是几个交易日K线的衔接和联系&#xff0c;它无法掩饰地透露着黄金价格运行趋势的某种征兆。研究K线组合的深刻蕴含&#xff0c;感知其内在动意&#xff0c;把握黄金价格上涨征兆&#xff0c;可以大大提高上涨的概率。其实对许多诸如“强势整理”、“突破…

基于VTK9.3.0+Visual Studio2017 c++实现DICOM影像MPR多平面重建

开源库&#xff1a;VTK9.3.0 开发工具&#xff1a;Visual Studio2017 开发语言&#xff1a;C 实现过程&#xff1a; void initImageActor(double* Matrix, double* center, vtkSmartPointer<vtkImageCast> pImageCast,vtkSmartPointer<vtkImageReslice> imageRe…