现有试卷作答记录表exam_record(uid用户ID, exam_id试卷ID, start_time开始作答时间, submit_time交卷时间, score得分): id uid exam_id start_time submit_time score 1 1006 9003 2021-09-07 10:01:01 2021-09-07 10:21:02 84 2 1006 9001 2021-09-01 12:11:01 2021-09-01 12:31:01 89 3 1006 9002 2021-09-06 10:01:01 2021-09-06 10:21:01 81 4 1005 9002 2021-09-05 10:01:01 2021-09-05 10:21:01 81 5 1005 9001 2021-09-05 10:31:01 2021-09-05 10:51:01 81 请计算在2021年至少有两天作答过试卷的人中,计算该年连续两次作答试卷的最大时间窗days_window,那么根据该年的历史规律他在days_window天里平均会做多少套试卷,按最大时间窗和平均做答试卷套数倒序排序。由示例数据结果输出如下: uid days_window avg_exam_cnt 1006 6 2.57 解释:用户1006分别在20210901、20210906、20210907作答过3次试卷,连续两次作答最大时间窗为6天(1号到6号),他1号到7号这7天里共做了3张试卷,平均每天37=0.428571张,那么6天里平均会做0.428571*6=2.57张试卷(保留两位小数); 用户1005在20210905做了两张试卷,但是只有一天的作答记录,过滤掉。
示例1

输入

drop table if exists exam_record;
CREATE TABLE exam_record (
    id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
    uid int NOT NULL COMMENT '用户ID',
    exam_id int NOT NULL COMMENT '试卷ID',
    start_time datetime NOT NULL COMMENT '开始时间',
    submit_time datetime COMMENT '提交时间',
    score tinyint COMMENT '得分'
)CHARACTER SET utf8 COLLATE utf8_general_ci;

INSERT INTO exam_record(uid,exam_id,start_time,submit_time,score) VALUES
(1006, 9003, '2021-09-07 10:01:01', '2021-09-07 10:21:02', 84),
(1006, 9001, '2021-09-01 12:11:01', '2021-09-01 12:31:01', 89),
(1006, 9002, '2021-09-06 10:01:01', '2021-09-06 10:21:01', 81),
(1005, 9002, '2021-09-05 10:01:01', '2021-09-05 10:21:01', 81),
(1005, 9001, '2021-09-05 10:31:01', '2021-09-05 10:51:01', 81);

输出

1006|6|2.57

备注:
按最大时间窗和平均做答试卷套数倒序排序,保留两位小数
加载中...