2014-02-11 101 views
0

我試圖從每個國家返回高爾夫球手的國家,高爾夫球手名稱,高爾夫球手年齡和平均車速。SQL選擇不同的返回副本

但是,我得到的結果集與重複的同一個國家。我究竟做錯了什麼?這裏是我的代碼:

select distinct country, name, age, avgdrive 
from pga.golfers S1 
inner join 
(select max(avgdrive) as MaxDrive 
from pga.golfers 
group by country) S2 
on S1.avgdrive = s2.MaxDrive 
order by avgdrive; 

這些都是一些成績我已經得到了,我應該只得到15行的,而是我得到20:

COUN NAME         AGE AVGDRIVE 
---- ------------------------------ ---------- ---------- 
Can Mike Weir        35  279.9 
T&T Stephen Ames       41  285.8 
USA Tim Petrovic       39  285.8 
Ger Bernhard Langer      47  289.3 
Swe Fredrik Jacobson      30  290 
Jpn Ryuji Imada       28  290 
Kor K.J. Choi        37  290.4 
Eng Greg Owen        33  291.8 
Ire Padraig Harrington      33  291.8 
USA Scott McCarron       40  291.8 
Eng Justin Rose       25  293.1 
Ind Arjun Atwal       32  293.7 
USA John Rollins       30  293.7 
NIr Darren Clarke       37  294 
Swe Daniel Chopra       31  297.2 
Aus Adam Scott        25  300.6 
Fij Vijay Singh       42  300.7 
Spn Sergio Garcia       25  301.9 
SAf Ernie Els        35  302.9 
USA Tiger Woods       29  315.2 

回答

0

你是缺少join條件:

select s1.country, s1.name, s1.age, s1.avgdrive 
from pga.golfers S1 inner join 
    (select country, max(avgdrive) as MaxDrive 
     from pga.golfers 
     group by country 
    ) S2 
    on S1.avgdrive = s2.MaxDrive and s1.country = s2.country 
order by s1.avgdrive; 

你的問題是,有些人在一個國傢俱有相同的平均值作爲在另一個國家最好的。

+0

當我使用上述查詢時,我得到「列不明確定義」。有任何想法嗎? – user2985261

+0

NVM我知道了,只需要澄清哪些表使用國家信息。多謝你們! – user2985261

0

DISTINCT消除重複行,而不是某些字段中的值。 要獲取具有年齡,姓名和最大驅動器的國家/地區的列表,您需要按國家/地區對整個選擇進行分組。