|
大概的业务需求是这样的:一个学生(student_id)有很多课程(class_id)、每门课程有一个得分(score)。现在想输出每个学生得分最高的那门课程,请问如何用一个SQL实现(Postgresql)。谢谢!
create table my_test(
id bigserial,
student_id int,
class_id varchar(64),
score int
);
delete from my_test;
insert into my_test(student_id, class_id, score) values (1, 'c1', 99);
insert into my_test(student_id, class_id, score) values (1, 'c2', 90);
insert into my_test(student_id, class_id, score) values (1, 'c3', 87);
insert into my_test(student_id, class_id, score) values (2, 'c2', 99);
insert into my_test(student_id, class_id, score) values (2, 'c1', 90);
insert into my_test(student_id, class_id, score) values (2, 'c3', 87);
insert into my_test(student_id, class_id, score) values (3, 'c3', 99);
insert into my_test(student_id, class_id, score) values (3, 'c1', 90);
insert into my_test(student_id, class_id, score) values (3, 'c2', 87);
期望的输出为:
1, 'c1', 99
2, 'c2', 99
3, 'c3', 99
|
|