【发布时间】:2013-07-24 01:56:08
【问题描述】:
我什至不确定这是否可以仅使用 SQL,但这里是...
我在一个表中有一个足球结果列表,每一行都是一场比赛,并包含该比赛的所有数据,即 Home(team)、HomeGoals、AwayGoals、Away(team),我想循环浏览每场比赛,得到主队,查看他们最近 6 场比赛,并仅显示指定球队在最近 6 场比赛中 50% 或更多进球数达到 2 球或以上的比赛。
到目前为止我有这个,我只是不知道如何将它缝合在一起......
创建所有比赛的列表,只返回主队:
SELECT *
FROM [FDATA].[dbo].[Goals]
ORDER BY Date
获取该球队的最后6场比赛:(我想对上述查询的每一行进行以下查询)
SELECT TOP 6 *
FROM [FDATA].[dbo].[Goals]
WHERE Home = '[Home] from first query' AND Date <= '[Date] from first query'
ORDER BY Date DESC
然后检查球队在返回的 6 场比赛中是否有 >= 50% 的球进了 2 球或更多球,如果为真则输出第一个查询中的行。
所以基本上对于数据库中的每一行,我想找到该行(比赛)中主队的最后 6 场比赛,看看他们是否在 50% 或更多的比赛中进了 2 球或更多球,如果是,输出原始行,如果没有,则从结果中省略该行。
有可能吗?
【问题讨论】:
-
您使用的是什么 DBMS? SQL Server、甲骨文、MySQL?它有很大的不同。你的语法看起来像 SQL Server,但我不是 100% 确定。
-
这绝对是可能的,但它会非常复杂。我希望效率对您来说不是一个大问题。
-
您的意思是 - 获取在他们参加的 6 场后续比赛中的任何一场比赛中取得 2 个或更多进球且 50% 或更多的球队名单?然后获取这些球队的所有记录,他们是主队?
-
请问什么版本的 SQL Server?
标签: sql-server tsql sql-server-2012