我如何为这个问题编写 SQL 语句?
Posted
技术标签:
【中文标题】我如何为这个问题编写 SQL 语句?【英文标题】:How do I write a SQL statement for this question? 【发布时间】:2020-06-14 15:59:22 【问题描述】:CHAMPIONS
(约 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
写一个查询,显示每个国家/地区赢得世界杯的次数至少两次。
我很困惑的是,每个国家赢得了多少次,例如 2018 年有 3 次法国。我不确定我是否需要计数选项或选择语句。
如果我的查询需要任何调整,我将不胜感激。
我尝试过的:
这是我想出的:
SELECT YEAR, COUNTRY
FROM CHAMPIONS
WHERE COUNTRY>=2;
我希望这是对的。
【问题讨论】:
提示:查找GROUP BY
和HAVING
。
select country,count() from Champions group by country with count()>2
我认为一年内三夺世界杯是不可能的。您需要更好地了解您的数据。
您应该标记您正在使用的正确 RDBMS - 您使用的是 mysql 还是 Microsoft SQL Server?
欢迎来到 SO。首先弄清楚您使用的是哪个 RDBMS。那就看Why should I provide an MCRE for what seems to me to be a very simple SQL query
【参考方案1】:
您必须计算每个国家/地区的不同年份,如下所示:
SELECT COUNTRY, COUNT(DISTINCT [YEAR]) AS WON
FROM CHAMPIONS
GROUP BY COUNTRY
HAVING COUNT(DISTINCT [YEAR]) > 1;
【讨论】:
【参考方案2】:如果你想获得所有英雄,那么很明显你一次只能拥有一个英雄。我会专注于角色...假设您只计算经理...示例:
select country,count(*) from champions where role='Manager' group by country,role having count(*)>=2
【讨论】:
以上是关于我如何为这个问题编写 SQL 语句?的主要内容,如果未能解决你的问题,请参考以下文章