2016-11-28 64 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

该查询以速度顺序给出了所有高级记录。 –