下面的sql语句正确吗?

plicqrtu  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(337)

目标(约1700行)

YEAR COUNTRY   NAME              NUM_GOALS
-------------------------------------------
2018 England   Harry Kane                6
2018 France    Antoine Griezmann         4
2014 Argentina Lionel Messi              4
2014 Brazil    Fred                      1
2010 Germany   Thomas Muller             5
2010 Japan     Shinji Okazaki            1
1992 England   Gary Linekar              6

冠军(约500排)

YEAR    COUNTRY NAME    ROLE
-------------------------------------------------
2018    France  Didier Deschamps    Manager
2018    France  Hugo Lloris Goalkeeper
2018    France  Paul Pogba  Midfielder
2014    Germany Joachim Loew    Manager
2014    Germany Mesut Ozil  Midfielder
2014    Germany Miroslav Klose  Forward
2002    Brazil  Da Silva    Midfielder
1994    Brazil  Da Silva    Midfielder
1998    France  Didier Deschamps    Midfielder

写一个查询来确定每个世界杯的金靴奖得主(最高进球者)。
我不确定的是我是否应该包括一个max子句。
我将非常感谢额外的澄清和帮助这一点,或者如果我的查询需要任何调整。
这就是我想说的:

SELECT NAME, YEAR, MAX(NUM_GOALS) as NUM_GOALS 
FROM GOALS;
siotufzp

siotufzp1#

yuur查询不是有效的sql:在中有聚合列和非聚合列 SELECT 条款,但不是 GROUP BY 条款。
如果你想知道每年得分最高的人的名字,那么这是一个最大的问题。您不想聚合行,而是过滤它们。一个典型的选项是为此目的使用相关子查询:

select g.*
from goals g
where g.num_goals = (select max(g1.goals) from goals g1 where g1.year = g.year)

这将包括领带,如果有的话。

相关问题