现有课程信息表 course_info_tb(cid:课程ID,tag:视频类别,release_date:发布日期,duration:视频时长),示例数据如下: id cid tag release_date duration 1 9001 sql 2022-01-01 60 2 9002 sql 2022-01-01 90 3 9003 sql 2022-01-01 45 4 9004 java 2022-01-02 45 用户观看记录表 play_record_tb(uid:用户ID,cid:课程ID,start_time:开始观看时间,end_time:结束观看时间,score:用户评分),示例数据如下: id uid cid start_time end_time score 1 1001 9001 2022-01-01 08:30:00 2022-01-01 09:00:00 4 2 1001 9001 2022-01-03 09:30:00 2022-01-03 10:20:00 2 3 1002 9001 2022-01-01 08:30:00 2022-01-01 09:40:00 3 4 1001 9002 2022-01-02 08:30:00 2022-01-02 09:01:00 2 5 1001 9002 2022-01-11 08:30:00 2022-01-11 08:31:01 3 6 1001 9002 2022-01-05 08:30:00 2022-01-05 08:54:01 2 7 1003 9002 2022-01-05 08:30:00 2022-01-05 08:51:01 4 请找到那些能让用户一遍接一遍重复观看的高回头率视频,输出被重复观看人次数。若某人对某视频只观看了一次,则不计为重复观看次数,如果某人对某视频观看了n次(n1),则记为该视频重复观看次数+n。如果被重复观看次数一样大,则越晚发布的视频排名越靠前,每个视频的排名为排在他前面的视频个数+1。请找出被重复观看数排名前三的视频,输出这些视频的课程ID、被重复观看次数和排名。结果按排名升序。若被重复观看视频不足三个,按排名全部输出。示例输出如下: cid pv rk 9002 3.000 1 9001 2.000 2
示例1
输入
drop table if exists course_info_tb;
CREATE TABLE course_info_tb (
id INT auto_increment PRIMARY KEY,
cid int NOT NULL COMMENT "课程ID",
tag varchar(10) COMMENT "课程类别",
release_date date COMMENT "发布日期",
duration INT COMMENT "视频时长(分钟)"
)ENGINE=innodb DEFAULT CHARSET=utf8;
INSERT INTO course_info_tb(cid, tag, release_date, duration) VALUES
(9001, 'sql', '2022-01-01', 60)
,(9002, 'sql', '2022-01-01', 90)
,(9003, 'sql', '2022-01-01', 45)
,(9004, 'java', '2022-01-02', 45)
;
drop table if exists play_record_tb;
CREATE TABLE play_record_tb (
id INT auto_increment PRIMARY KEY,
uid INT NOT NULL COMMENT "用户ID",
cid INT NOT NULL COMMENT "课程ID",
start_time datetime COMMENT "开始观看时间",
end_time datetime COMMENT "结束观看时间",
score TINYINT COMMENT "用户评分"
)ENGINE=innodb DEFAULT CHARSET=utf8;
INSERT INTO play_record_tb(uid, cid, start_time, end_time, score) VALUES
(1001, 9001, '2022-01-01 08:30:00', '2022-01-01 09:00:00', 4)
,(1001, 9001, '2022-01-03 09:30:00', '2022-01-03 10:20:00', 2)
,(1002, 9001, '2022-01-01 08:30:00', '2022-01-01 09:40:00', 3)
,(1001, 9002, '2022-01-02 08:30:00', '2022-01-02 09:01:00', 2)
,(1001, 9002, '2022-01-11 08:30:00', '2022-01-11 08:31:01', 3)
,(1001, 9002, '2022-01-05 08:30:00', '2022-01-05 08:54:01', 2)
,(1003, 9002, '2022-01-05 08:30:00', '2022-01-05 08:51:01', 4)
输出
9002|3.000|1
9001|2.000|2
加载中...