2016-09-26 28 views
0

所以我們可以說我有兩個表:SQL:按列分組,同時顯示其他列條目

name_tbl

| INIT | NAME | 
| JA | Jack | 
| JO | John | 
| MI | Michael | 
| GE | George | 
| WI | William | 
| BL | Blake | 
| PE | Peter | 

ranking_tbl

| YEAR | INIT | RANKING 
| 1990 | JA | 5 
| 1990 | JO | 22 
| 1990 | PE | 54 
| 1992 | MI | 2 
| 1992 | JA | 14 
| 1993 | GE | 1 
| 1994 | JO | 8 

我想按年份分組,並dis發揮當年的最高排名,以及當年排名最高的人的名字。

我能夠顯示年份和排名輕鬆通過使用聚合函數的排名和按年分組。然而,我在解決如何顯示最高級別的名稱時遇到了問題。

到目前爲止,我寫了下面的SQL:

SELECT r.year, min(r.ranking) 
FROM RANKING_TBL r 
GROUP BY r.year 

我試圖內加入其他表,並選擇該名稱,但它返回我一個錯誤說我必須包含它在聚合函數,或者在GROUP BY子句中......

SELECT r.year, min(r.ranking), n.name 
FROM ranking_tbl r 
INNER JOIN name_tbl n 
ON r.init = n.init 
GROUP BY r.year 

回答

0

可以在條款上幾年和最大使用子查詢有(排名)

select a.year, a.ranking, b.name 
from ranking_tbl as a 
inner join name_tbl as b on a.init = b.init 
where (a.year, a.ranking) in (
     select year, max(ranking) 
     from ranking_tbl 
     group by year) 
相關問題