我的学生考试成绩如下表所示:
我想要一个能够返回学生最佳成绩的SQL语句:
学生1 - 数学A
学生2 - 数学D
等.....
我在日期尝试了MAX(),DISTINCT,分组......但我觉得我在黑暗中摸索。
编辑:我应该说等级上的MIN和MAX不起作用,因为A *是可能的等级,按字母顺序排在A之后,这是不正确的。等级可以是各种不具有逻辑等级的字母和数字(例如,L1优于EL1但L3优于L1)。可能需要具有排名的子表吗?
答案 0 :(得分:0)
SELECT StudentName
,MIN(Grade) Best_Grade
FROM Table_Name
GROUP BY StudentName
答案 1 :(得分:0)
Please try below query in SQL :
create table #test_table(
name varchar(20),
subjects varchar(20),
grade varchar,
resultdate datetime
)
insert into #test_table
select 'student1', 'math', 'A','2012-09-01' union all
select 'student1', 'math', 'B','2013-09-01' union all
select 'student2', 'math', 'D','2014-09-01' union all
select 'student1', 'math', 'A','2014-09-01'
select * from(
select row_number() over(partition by name,subjects order by grade,resultdate desc) as rn,* from #test_table ) tbl where rn=1
drop table #test_table