【代码题】成绩表中有4个字段:id(学号),name(姓名),course(学科),score(成绩),请设计每个字段的具体类型并用一个SQL查询出每一科最高分学生的学号、姓名、科目和成绩
【】
create database godfucker;
use godfucker;
select database();
drop table chengji;
create table chengji
(
id varchar(255),
`name` varchar(255),
course varchar(255),
score int
);
show tables;
select *
from chengji;
insert into chengji
values ('01', '麻少飞', '语文', 60);
insert into chengji
values ('01', '麻少飞', '数学', 105);
insert into chengji
values ('01', '麻少飞', '英语', 90);
insert into chengji
values ('02', '刘子涵', '语文', 90);
insert into chengji
values ('02', '刘子涵', '数学', 60);
insert into chengji
values ('02', '刘子涵', '英语', 102);
insert into chengji
values ('03', '张嘉敏', '语文', 100);
insert into chengji
values ('03', '张嘉敏', '数学', 60);
insert into chengji
values ('03', '张嘉敏', '英语', 90);
insert into chengji
values ('04', '周嘉碧', '英语', 102);
select *
from chengji;
-- 【问题】查询每一科最高分学生的学号、姓名、科目 和 成绩
-- -- 【徐鹏飞】【答案】
select a.id 学号,
a.name 学生,
a.course 学科,
a.score 成绩
from chengji a
left join chengji b on a.course = b.course and a.score < b.score
group by a.id, a.name, a.course, a.score
having count(b.score) < 1
order by a.course, a.score desc;