#P5296. 第2题-夜校分档均次
-
1000ms
Tried: 0
Accepted: 0
Difficulty: 3
所属公司 :
荣耀
时间 :2026年8月25日
第2题-夜校分档均次
No testdata at current.
解题思路
先从学员卡中筛选校区为 海风夜校 的学员,再通过 pad_id 与作答流水表连接,保证只统计该校学员的作答记录。
然后根据流水中的 item_id 连接题目档位表,得到每条作答对应的题目档位 grade。
题目内容
夜校教务要把「指定夜校里真正动过笔的学员」按题目档位拆开,看人均作答条数。库里有三张表:学员卡、作答流水、题目档位。卡号、校区名、档位英文、对错标记都按表里的原文使用。
本次只统计校区为 海风夜校 的学员。先筛出该校区,再把流水和档位对上。某个档位上的人均作答条数定义为:该校学员在该档位上的流水总条数,除以「在该档位上至少有一条流水的该校学员人数」。该校完全没有作答的档位不输出。平均值小数点后保留 4 位,第 5 位四舍五入。
学员卡:trainee_card
| id | pad_id | gender | age | campus | gpa | active_days_within_30 | question_cnt | answer_cnt |
|---|---|---|---|---|---|---|---|---|
1 |
7001 |
male | 22 |
江左书院 | 3.1 |
6 |
2 |
8 |
2 |
7002 |
female | 24 |
青禾学堂 | 3.7 |
11 |
4 |
16 |
3 |
8801 |
male | 26 |
海风夜校 | 3.5 |
18 |
12 |
40 |
4 |
7004 |
female | 21 |
江左书院 | 3.0 |
4 |
1 |
3 |
5 |
8802 |
male | 29 |
海风夜校 | 3.2 |
14 |
6 |
20 |
6 |
7006 |
female | 23 |
星河夜校 | 3.9 |
9 |
5 |
22 |
pad_id 是手写板编号,campus 是夜校校区。只有 8801、8802 属于海风夜校。
作答流水:drill_flow
| id | pad_id | item_id | result |
|---|---|---|---|
1 |
7001 |
501 |
wrong |
8 |
8801 |
503 |
|
10 |
8802 |
501 |
right |
result 只有 right / wrong。完整流水见输入里的 INSERT。
题目档位:drill_item
| id | item_id | grade |
|---|---|---|
1 |
501 |
easy |
2 |
502 |
medium |
3 |
503 |
easy |
4 |
504 |
hard |
5 |
505 |
medium |
6 |
506 |
easy |
grade 只有 hard / medium / easy。
查询应返回:
| campus | grade | avg_answer_cnt |
|---|---|---|
| 海风夜校 | easy | (4.5000) |
| medium | (3.0000) |
输入描述
输入是一段可执行的 SQL:创建 trainee_card、drill_flow、drill_item 并写入示例行。表名、字段名、校区中文名、male/female、right/wrong、hard/medium/easy 均须按原文使用。
输出描述
输出若干行,每行三个字段,用 | 分隔:校区、档位、人均作答条数(四位小数,外加括号)。只输出海风夜校、且该校确有作答的档位。
样例1
输入
drop table if exists `trainee_card`;
drop table if exists `drill_flow`;
drop table if exists `drill_item`;
CREATE TABLE `trainee_card` (
`id` int NOT NULL,
`pad_id` int NOT NULL,
`gender` varchar(14) NOT NULL,
`age` int ,
`campus` varchar(32) NOT NULL,
`gpa` float,
`active_days_within_30` int ,
`question_cnt` int ,
`answer_cnt` int
);
CREATE TABLE `drill_flow` (
`id` int NOT NULL,
`pad_id` int NOT NULL,
`item_id` int NOT NULL,
`result` varchar(32) NOT NULL
);
CREATE TABLE `drill_item` (
`id` int NOT NULL,
`item_id` int NOT NULL,
`grade` varchar(32) NOT NULL
);
INSERT INTO trainee_card VALUES(1,7001,'male',22,'江左书院',3.1,6,2,8);
INSERT INTO trainee_card VALUES(2,7002,'female',24,'青禾学堂',3.7,11,4,16);
INSERT INTO trainee_card VALUES(3,8801,'male',26,'海风夜校',3.5,18,12,40);
INSERT INTO trainee_card VALUES(4,7004,'female',21,'江左书院',3.0,4,1,3);
INSERT INTO trainee_card VALUES(5,8802,'male',29,'海风夜校',3.2,14,6,20);
INSERT INTO trainee_card VALUES(6,7006,'female',23,'星河夜校',3.9,9,5,22);
INSERT INTO drill_flow VALUES(1,7001,501,'wrong');
INSERT INTO drill_flow VALUES(2,7002,502,'wrong');
INSERT INTO drill_flow VALUES(3,7002,501,'wrong');
INSERT INTO drill_flow VALUES(4,7001,504,'right');
INSERT INTO drill_flow VALUES(5,7004,506,'right');
INSERT INTO drill_flow VALUES(6,7004,505,'right');
INSERT INTO drill_flow VALUES(7,7004,503,'wrong');
INSERT INTO drill_flow VALUES(8,8801,503,'wrong');
INSERT INTO drill_flow VALUES(9,8801,502,'wrong');
INSERT INTO drill_flow VALUES(10,8802,501,'right');
INSERT INTO drill_flow VALUES(11,8801,501,'wrong');
INSERT INTO drill_flow VALUES(12,7004,506,'right');
INSERT INTO drill_flow VALUES(13,7004,505,'right');
INSERT INTO drill_flow VALUES(14,7004,503,'wrong');
INSERT INTO drill_flow VALUES(15,8801,503,'wrong');
INSERT INTO drill_flow VALUES(16,8801,502,'wrong');
INSERT INTO drill_flow VALUES(17,8802,501,'right');
INSERT INTO drill_flow VALUES(18,8801,501,'wrong');
INSERT INTO drill_flow VALUES(19,7004,503,'wrong');
INSERT INTO drill_flow VALUES(20,8801,503,'wrong');
INSERT INTO drill_flow VALUES(21,8801,502,'wrong');
INSERT INTO drill_flow VALUES(22,8802,501,'right');
INSERT INTO drill_flow VALUES(23,8801,501,'wrong');
输出
海风夜校|easy|(4.5000)
海风夜校|medium|(3.0000)
说明
海风夜校只有手写板 8801、8802。
8801:501(easy)3条,502(medium)3条,503(easy)3条。8802:501(easy)3条。
easy 共 9 条、有作答学员 2 人,人均 9/2=(4.5000);medium 共 3 条、有作答学员只有 8801 共 1 人,人均 3/1=(3.0000)。hard 该校没有流水,不输出。