2022-05-24
阅读量:
521
sql计算视频完播率
1 计算视频完播率
2,对应sql 代码与答案
create database test002; use test002; DROP TABLE IF EXISTS tb_user_video_log, tb_video_info; CREATE TABLE tb_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 utf8_bin; CREATE TABLE tb_video_info ( id INT PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID', video_id INT UNIQUE NOT NULL COMMENT '视频ID', author INT 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 utf8_bin; INSERT INTO tb_user_video_log(uid, video_id, start_time, end_time, if_follow, if_like, if_retweet, comment_id) VALUES (101, 2001, '2021-10-01 10:00:00', '2021-10-01 10:00:30', 0, 1, 1, null), (102, 2001, '2021-10-01 10:00:00', '2021-10-01 10:00:24', 0, 0, 1, null), (103, 2001, '2021-10-01 11:00:00', '2021-10-01 11:00:34', 0, 1, 0, 1732526), (101, 2002, '2021-09-01 10:00:00', '2021-09-01 10:00:42', 1, 0, 1, null), (102, 2002, '2021-10-01 11:00:00', '2021-10-01 11:00:30', 1, 0, 1, null); INSERT INTO tb_video_info(video_id, author, tag, duration, release_time) VALUES (2001, 901, '影视', 30, '2021-01-01 7:00:00'), (2002, 901, '美食', 60, '2021-01-01 7:00:00'), (2003, 902, '旅游', 90, '2021-01-01 7:00:00'); # 1,计算视频对应观看次数,观看时长,视频时长,完播次数 select vlog.video_id ,uid, count(vlog.video_id) 观看次数 , TIMESTAMPDIFF(second,start_time,end_time) 观看时长, duration 视频时长, sum(TIMESTAMPDIFF(second,start_time,end_time) >= duration) 完播次数 from tb_user_video_log as vlog left join (select video_id,duration from tb_video_info) t1 on vlog.video_id=t1.video_id group by video_id; # 计算视频完播率(完播次数/观看次数) select t2.video_id,完播次数/观看次数 完播率 from ( select vlog.video_id ,uid, count(vlog.video_id) 观看次数 , TIMESTAMPDIFF(second,start_time,end_time) 观看时长, duration 视频时长, sum(TIMESTAMPDIFF(second,start_time,end_time) >= duration) 完播次数 from tb_user_video_log as vlog left join (select video_id,duration from tb_video_info) t1 on vlog.video_id=t1.video_id group by video_id) t2 group by video_id;






评论(0)


暂无数据
推荐帖子
0条评论
0条评论
0条评论