0

我什至不确定这是否可以仅使用 SQL 来实现,但这里......

我在一个表中有一个足球结果列表,每一行都是一场比赛,包含那场比赛的所有数据,我想循环浏览每场比赛,得到主队,检查他们最近的 6 场比赛,只显示指定的比赛球队在最近 6 场比赛中有 50% 或更多的进球数达到或超过 2 个。

到现在为止,我只是不知道如何将它缝合在一起......

创建所有比赛的列表,只返回主队:

SELECT Date, Home
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 球或更多球,如果为真,则输出第一个查询中的行:

SELECT *
FROM last query
WHERE HomeGoals >= 2
ORDER BY Date DESC 

为这个问题的粗鲁道歉,但我有点新手。

4

1 回答 1

0

使用只需要两个查询:

SELECT home, count(1) cnt
FROM 
(
     SELECT TOP 6 G1.HomeGoals, G1.Home
       FROM [FDATA].[dbo].[Goals] AS G1 
          LEFT OUTER JOIN
            [FDATA].[dbo].[Goals] AS G2 ON
           G1.Home = G2.HOME  AND G1.Date <= G2.Date  
     ORDER BY G1.Date DESC    
)
WHERE HomeGoals >= 2
GROUP BY home
HAVING count(1) >= 3
于 2013-07-19T16:05:48.007 回答