2016-11-28 51 views
0

這個查詢問題我曾經在幾個地方被稱爲「經典SQL問題」。然而,我卻無法找到解決方案。問題是我無法找到避免結果重複的方法,因爲山姆在兩次加熱中速度相同。「經典」SQL查詢問題,如何避免重複

的出發點是從比賽一時間「結果」表:

Id Name Club  Engine  Class Heat Speed 
1 Joe  NYRC  Rotax  Senior 1  320 
2 Sam  GMRK  HQ   Senior 1  280 
3 Adam HCRC  Rossi  Senior 1  180 
4 Rick NYRC  Ford  Junior 1  220 
5 Joe  NYRC  Rotax  Senior 2  330 
6 Sam  GMRK  HQ   Senior 2  280 
7 Adam HCRC  Rossi  Senior 2  190 
8 Joe  NYRC  Rotax  Senior 3  300 
9 Sam  GMRK  HQ   Senior 3  210 
10 Adam HCRC  Rossi  Senior 3  200 

我要的是最好的結果後,下令每類結果列表:

Pos Name Club  Engine  Class Heat Speed 
1 Joe  NYRC  Rotax  Senior 2  330 
2 Sam  GMRK  HQ   Senior 1  280 
3 Adam HCRC  Rossi  Senior 3  200 

我能有什麼得到:

Pos Name Club  Engine  Class Heat Speed 
1 Joe  NYRC  Rotax  Senior 2  330 
2 Sam  GMRK  HQ   Senior 2  280 
3 Sam  GMRK  HQ   Senior 1  280 
4 Adam HCRC  Rossi  Senior 3  200 

使用以下查詢:

select yt.Name, yt.Club, yt.Engine, yt.Class, yt.Heat, yt.Speed 
from Result yt 
where Speed = (select max(Speed) from Result st where yt.Name=st.Name) 
AND Class = 'Senior' 
Order by Speed DESC 

應用不同的地方似乎是一個好主意,但我一直無法成功!

感謝支持

+0

這是不完全清楚你想要什麼,但如果你創建一個[sqlfiddle(HTTP: //sqlfiddle.com)與測試數據和期望的結果相比,我們將更容易爲您提供幫助。 –

+0

你在使用什麼平臺? – Hogan

+2

熱有兩個不同的值,你想保留哪個值? –

回答

0

剛剛得到最大(速度)和組,每隔領域:

select yt.Name, yt.Club, yt.Engine, yt.Class, yt.Heat, max(yt.Speed) as MaxSpeed 
from Result yt 
where Class = 'Senior' 
group by Name, Club, Engine, Class, Heat 
Order by MaxSpeed DESC 
+0

我認爲他想要最好的結果。 – Hogan

+0

該查詢以速度順序給出了所有高級記錄。 –