以下SQL语句正确吗?

问题描述 投票:0回答:1

目标(〜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;
sql select greatest-n-per-group
1个回答
0
投票

您的查询不是有效的SQL:您在SELECT子句中有聚合和非聚合列,但没有GROUP BY子句。

如果您想获得每年得分最高的人的姓名,那么这就是每组最多的问题。您不想aggregate行,而是<< filter >>行。一个典型的选择是为此使用关联的子查询:select g.* from goals g where g.num_goals = (select max(g1.goals) from goals g1 where g1.year = g.year)

这将包括关系,如果有的话。
© www.soinside.com 2019 - 2024. All rights reserved.