我有一個表作爲與學生的考試成績如下:SQL語句返回學生的品位最好
我想要一個SQL語句,將返回學生的最佳等級:
學生1 - 數學系
學生2 - 數學d
等.....
我試過MAX()日期,DISTINCT,分組依據...但我想我在黑暗中摸索。
編輯:我應該說,等級上的最小值和最大值將不起作用,因爲A *是可能的等級,並且按字母順序排在A之後,這是不正確的。等級可以是各種不具有邏輯等級的字母和數字(例如,L1比EL1好,但L3比L1好)。可能需要有排名的子表嗎?
我有一個表作爲與學生的考試成績如下:SQL語句返回學生的品位最好
我想要一個SQL語句,將返回學生的最佳等級:
學生1 - 數學系
學生2 - 數學d
等.....
我試過MAX()日期,DISTINCT,分組依據...但我想我在黑暗中摸索。
編輯:我應該說,等級上的最小值和最大值將不起作用,因爲A *是可能的等級,並且按字母順序排在A之後,這是不正確的。等級可以是各種不具有邏輯等級的字母和數字(例如,L1比EL1好,但L3比L1好)。可能需要有排名的子表嗎?
SELECT StudentName
,MIN(Grade) Best_Grade
FROM Table_Name
GROUP BY StudentName
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
我應該說,MIN和MAX上檔次將無法正常工作,A *是一個可能的品位和字母順序來後,這是不正確。 – tonyyeb 2014-09-03 13:10:57
你能否更新你的問題,包括你存儲的檔次,以及順序是從最好到最差? – jpw 2014-09-03 13:12:48
@tonyyeb請將該評論添加到問題中,重要信息 – Tanner 2014-09-03 13:13:05