sql - 找到最大值

Ada*_* Sh 0 sql sql-server greatest-n-per-group

我有一个包含3列的表:代码,年份,百分比.

我需要在2009年返回具有最低(最小)百分比的代码.在此之后,我还需要代码的名称,在我创建的其他表中存在.

我只想使用CREATE VIEW,但我不想这样做.

xQb*_*ert 5

Select table.code, table.year, table.percentage, othertable.name
from table
inner join othertable  on table.FKId = othertable.PKid
where year = 2009 
  and percentage = 
  (select min(percentage) 
   from table 
   where year = 2009)
Run Code Online (Sandbox Code Playgroud)

更新以包括othertable ...因为我们没有名字.

更新现在我们有表名...现在更新第3次,我知道年份是字符串.

Select E.Code, C.Name 
From dbo.Exam E
inner join dbo.Course C
  ON E.Code = C.Code  
Where E.Year = '2009' and --<-- PROBLEM LIKELY HERE year was string not int.
 E.Fail = (select MIN(E2.Fail) 
                  from dbo.Exam E2 where E2.Year = '2009') --<--Don't forget here too.
Run Code Online (Sandbox Code Playgroud)

来自评论:示例数据:

 INSERT INTO Exam VALUES(333,'2009',40) 
 INSERT INTO Exam VALUES(333,'2009',20) 
 INSERT INTO Exam VALUES(555,'2009',19) 
 INSERT INTO Exam VALUES(444,'2009',19) 
 INSERT INTO Exam VALUES(777,'2009',23) 
 INSERT INTO Exam VALUES(333,'2009',0) 
 INSERT INTO Course VALUES(111,'Name1',5) 
 INSERT INTO Course VALUES(333,'Name2',5) 
 INSERT INTO Course VALUES(444,'Name3',6) 
 INSERT INTO Course VALUES(555,'Name4',3) 
 INSERT INTO Course VALUES(777,'Name5',3) 
 INSERT INTO Course VALUES(999,'Name6',6) 
Run Code Online (Sandbox Code Playgroud)

假设结果应该是Name2,5