sql - 下面的 SQL 语句是否正确?
问题描述
目标(~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;
解决方案
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)
这将包括关系,如果有的话。
推荐阅读
- javascript - Svelte: is there a way to cache the api result in a way that it won't trigger the api call everytime the component renders?
- azure - 将下一个应用程序部署到 Azure 失败,因为需要重新安装 node_modules
- sql-server - 使用 T-SQL 函数,如何从 count(*) 函数返回整数?
- javascript - ReactJs 路由器更改 url 但不更改页面
- python - 创建一个打印 if 语句结果的函数
- r - 从汇总/聚合数据中绘制密度
- ruby-on-rails - Axios:XSRF Cookie 未在生产中随请求一起发送
- amazon-web-services - 使一列依赖于 Amazon QuickSight 中另一列的顺序
- c++ - 尝试 urldownloadtofile 函数时出错
- javascript - 未找到 nuxtjs 内容