SQL语句返回学生的最佳成绩

时间:2014-09-03 13:06:54

标签: sql sql-server sql-server-2008

我的学生考试成绩如下表所示:

My Table

我想要一个能够返回学生最佳成绩的SQL语句:

学生1 - 数学A

学生2 - 数学D

等.....

我在日期尝试了MAX(),DISTINCT,分组......但我觉得我在黑暗中摸索。

编辑:我应该说等级上的MIN和MAX不起作用,因为A *是可能的等级,按字母顺序排在A之后,这是不正确的。等级可以是各种不具有逻辑等级的字母和数字(例如,L1优于EL1但L3优于L1)。可能需要具有排名的子表吗?

2 个答案:

答案 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