现有用户信息表user_info(uid用户ID,nick_name昵称, achievement成就值, level等级, job职业方向, register_time注册时间): id uid nick_name achievement level job register_time 1 1001 牛客1号 19 0 算法 2020-01-01 10:00:00 2 1002 牛客2号 1200 3 算法 2020-01-01 10:00:00 3 1003 进击的3号 22 0 算法 2020-01-01 10:00:00 4 1004 牛客4号 25 0 算法 2020-01-01 10:00:00 5 1005 牛客555号 2000 7 C++ 2020-01-01 10:00:00 6 1006 666666 3000 6 C++ 2020-01-01 10:00:00 试卷作答记录表exam_record(uid用户ID, exam_id试卷ID, start_time开始作答时间, submit_time交卷时间, score得分): id uid exam_id start_time submit_time score 1 1001 9001 2020-01-02 09:01:01 2020-01-02 09:21:59 80 2 1001 9001 2021-05-02 10:01:01 (NULL) (NULL) 3 1001 9002 2021-02-02 19:01:01 2021-02-02 19:30:01 87 4 1001 9002 2021-09-01 12:01:01 (NULL) (NULL) 5 1001 9003 2021-09-02 12:01:01 (NULL) (NULL) 6 1001 9004 2021-09-03 12:01:01 (NULL) (NULL) 7 1002 9001 2020-01-01 12:01:01 2020-01-01 12:31:01 99 8 1002 9003 2020-02-01 12:01:01 2020-02-01 12:31:01 82 9 1002 9003 2020-02-02 12:11:01 (NULL) (NULL) 10 1002 9002 2021-05-05 18:01:01 (NULL) (NULL) 11 1002 9001 2021-09-06 12:01:01 (NULL) (NULL) 12 1003 9003 2021-02-06 12:01:01 (NULL) (NULL) 13 1003 9001 2021-09-07 10:01:01 2021-09-07 10:31:01 89 请你筛选表中的数据,当有任意一个0级用户未完成试卷数大于2时,输出每个0级用户的试卷未完成数和未完成率(保留3位小数);若不存在这样的用户,则输出所有有作答记录的用户的这两个指标。结果按未完成率升序排序。 由示例数据结果输出如下: uid incomplete_cnt incomplete_rate 1004 0 0.000 1003 1 0.500 1001 4 0.667 解释:0级用户有1001、1003、1004;他们作答试卷数和未完成数分别为:6:4、2:1、0:0; 存在1001这个0级用户未完成试卷数大于2,因此输出这三个用户的未完成数和未完成率(1004未作答过试卷,未完成率默认填0,保留3位小数后是0.000); 结果按照未完成率升序排序。 附:如果1001不满足『未完成试卷数大于2』,则需要输出1001、1002、1003的这两个指标,因为试卷作答记录表里只有这三个用户的作答记录。
示例1

输入

drop table if exists user_info,exam_record;
CREATE TABLE user_info (
    id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
    uid int UNIQUE NOT NULL COMMENT '用户ID',
    `nick_name` varchar(64) COMMENT '昵称',
    achievement int COMMENT '成就值',
    level int COMMENT '用户等级',
    job varchar(32) COMMENT '职业方向',
    register_time datetime COMMENT '注册时间'
)CHARACTER SET utf8 COLLATE utf8_general_ci;

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 user_info(uid,`nick_name`,achievement,level,job,register_time) VALUES
  (1001, '牛客1', 19, 0, '算法', '2020-01-01 10:00:00'),
  (1002, '牛客2号', 1200, 3, '算法', '2020-01-01 10:00:00'),
  (1003, '牛客3号♂', 22, 0, '算法', '2020-01-01 10:00:00'),
  (1004, '牛客4号', 25, 0, '算法', '2020-01-01 10:00:00'),
  (1005, '牛客555号', 2000, 7, 'C++', '2020-01-01 10:00:00'),
  (1006, '666666', 3000, 6, 'C++', '2020-01-01 10:00:00');

INSERT INTO exam_record(uid,exam_id,start_time,submit_time,score) VALUES
(1001, 9001, '2020-01-02 09:01:01', '2020-01-02 09:21:59', 80),
(1001, 9001, '2021-05-02 10:01:01', null, null),
(1001, 9002, '2021-02-02 19:01:01', '2021-02-02 19:30:01', 87),
(1001, 9002, '2021-09-01 12:01:01', null, null),
(1001, 9003, '2021-09-02 12:01:01', null, null),
(1001, 9004, '2021-09-03 12:01:01', null, null),
(1002, 9001, '2020-01-01 12:01:01', '2020-01-01 12:31:01', 99),
(1002, 9003, '2020-02-01 12:01:01', '2020-02-01 12:31:01', 82),
(1002, 9003, '2020-02-02 12:11:01', null, null),
(1002, 9002, '2021-05-05 18:01:01', null, null),
(1002, 9001, '2021-09-06 12:01:01', null, null),
(1003, 9003, '2021-02-06 12:01:01', null, null),
(1003, 9001, '2021-09-07 10:01:01', '2021-09-07 10:31:01', 89);

输出

1004|0|0.000
1003|1|0.500
1001|4|0.667
加载中...