sql - 使用 SQL 查询在足球数据库中查找复出

标签 sql sql-server database relational-database sql-server-2016

我有 4 张 table 。

匹配:

 | id    | HomeTeamID  | AwayTeamID |
 --------|-------------|------------
 | 1     | 1           | 2
 | 2     | 1           | 3
 | 3     | 3           | 1

目标:

 | id    | MatchID     | Minute    | TeamID
 --------|-------------|---------- |---------
 | 1     | 1           |     3     |   2
 | 2     | 1           |     5     |   1
 | 3     | 1           |     15    |   1
 | 4     | 2           |     43    |   3
 | 5     | 2           |     75    |   1
 | 6     | 2           |     85    |   1
 | 7     | 3           |     11    |   1
 | 8     | 3           |     13    |   3
 | 9     | 3           |     77    |   3

团队:

 | id    | Name        | 
 --------|-------------|
 | 1     | Chelsea     | 
 | 2     | Arsenal     | 
 | 3     | Tottenham   |

经理:

 | id    | Name        | TeamID     |  
 --------|-------------|-------------
 | 1     | Conte       |    1
 | 2     | Wenger      |    2
 | 3     | Pochettino  |    3

我想获得经理复出比赛的次数。例如,孔蒂的球队在第一场和第二场比赛中率先失球,但他们赢了。所以孔蒂有2次翻盘。波切蒂诺在第 3 场比赛中有 1 次翻盘。我想用 SQL 查询找到它。

我找到了每支球队的第一个比赛进球。但经过一些步骤后,我失去了我正在做的事情。

SELECT MatchID, MIN(minute), g.TeamID
FROM Goals g
JOIN Managers m ON m.TeamID = g.TeamID
GROUP BY MatchID, g.TeamID

最佳答案

with cte 
(
MatchID,TeamID,TotalGoalTime,NoOfGoals,ManagerName,comeback)
as(SELECT MatchID, g.TeamID,sum(minutea) as'TotalGoalTime' ,count(*)as'NoOfGoals',m.name as'ManagerName'
,comeback =ROW_NUMBER() OVER(PARTITION BY MatchID order by sum(minutea) desc) 
FROM Goals g
JOIN Managers m ON m.TeamID = g.TeamID
join [Teams] t on t.Id=g.TeamId
GROUP BY MatchID, g.TeamID,m.name )
Select MatchID,TeamID,NoOfGoals,ManagerName from cte where comeback =1

上面的查询现在给了我们整体的回归,将更新回归的次数。

关于sql - 使用 SQL 查询在足球数据库中查找复出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44083851/

相关文章:

mysql - 两个表之间的多对多关系

sql - 如何监控和记录所有的 SQL 插入命令

Mysql 查找具有最长字段值的行作为文本的开头

php - 我们如何在后台运行sql查询

sql - 批量插入分区表和表级锁

php - 如何防止一个页面出现多条sql查询?

sql - SQL Server 中的跨数据库 information_schema 连接

c# - 在 C#/.NET 中执行批量更新的最快方法

sql - 如何使用 IN 子句查询大量单词

Java MySQL 表