2017-06-27 28 views
0

這是數據從數據庫sqlite3的樣品:如何查找與其他列中的另一個值相對應的列中值的最大值? (在描述的例子)

playerID nameFirst nameLast HR (homeruns) 

bondsba01 Barry  Bonds  73 
mcgwima01 Mark  McGwire  70 
sosasa01 Sammy  Sosa  66 
mcgwima01 Mark  McGwire  65 
sosasa01 Sammy  Sosa  64 
sosasa01 Sammy  Sosa  63 
marisro01 Roger  Maris  61 
ruthba01 Babe  Ruth  60 
ruthba01 Babe  Ruth  59 
foxxji01 Jimmie  Foxx  58 
greenha01 Hank  Greenberg 58 
...truncated... 

我用這個命令來選擇這樣的數據:

SELECT Master.playerID, Master.nameFirst, Master.nameLast, Batting.HR 
FROM Master 
INNER JOIN Batting on Master.playerID = Batting.playerID 
ORDER BY Batting.HR DESC 
LIMIT 100; 

Baiscally我要回答以下問題:本壘打人數排名前20的棒球選手是什麼?但是,正如你所看到的,有些球員有多個項,因爲表具有多年該玩家是活動數據。

我已經回答了使用pandas和其他一些Python命令的問題。但我希望能夠用單個SQL查詢來回答這個問題。我已經試過沒有成功的幾件事與DISTINCT,GROUP BY

爲了更清楚,我想每個獨特的球員有本壘打的最大數量了。然後我想按本壘打的數量排序所有這些獨特的名字。

我想transfrom上表成這樣:

playerID nameFirst nameLast HR (homeruns) 

bondsba01 Barry  Bonds  73 
mcgwima01 Mark  McGwire  70 
sosasa01 Sammy  Sosa  66 
marisro01 Roger  Maris  61 
ruthba01 Babe  Ruth  60 
foxxji01 Jimmie  Foxx  58 
greenha01 Hank  Greenberg 58 

我想這不應該是很辛苦,但我沒有與SQL很多經驗。

回答

4

使用MAX()

SELECT M.playerID, M.nameFirst, M.nameLast, MAX(B.HR) Runs 
FROM Master M 
INNER JOIN Batting B 
    on M.playerID = B.playerID 
GROUP BY M.playerID, M.nameFirst, M.nameLast 
+0

大,它的工作原理。我只需要添加'ORDER BY運行DESC'。 – Alex

+0

歡迎,如果它可以幫助你可以投票正確的答案 – mohan111

相關問題