我正在努力让这个国家,高尔夫球手的名字,高尔夫球手的年龄以及每个国家平均驾驶最高的高尔夫球手平均得分。
但是我得到的结果集与同一个国家/地区的副本相同。我究竟做错了什么?这是我的代码:
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 :(得分: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;
你的问题是,一个国家的某些人的平均水平与另一个国家的平均水平相同。
答案 1 :(得分:0)
DISTINCT消除了重复的行,而不是某些字段中的值。 要获取包含年龄,姓名和最大驱动器的国家/地区列表,您需要按国家/地区对整个选择进行分组。