我昨天问了一个类似的问题,得到了正确的回答。需要自我连接和排名的 SQL 虽然这个问题很相似,但我无法调整答案以适应。
我有一个足球结果表:
CREATE TABLE matches(
season NUMBER(4),
matchDate DATE,
homeTeam VARCHAR2(25),
awayTeam VARCHAR2(25),
homeGoals NUMBER(2),
awayGoals NUMBER(2),
totalGoals NUMBER(3));
INSERT 语句可以在这里找到:https ://gist.github.com/2941229
我希望按如下方式计算 totalGoals 的值。它是当前主队最近 5 场比赛的总进球数(主场进球+客场进球)加上当前客队在本场比赛之前最近 5 场比赛的进球数。它不能包括当前比赛的进球。
与昨天的问题不同的是,它只计算了之前主队主场比赛和客队客场比赛的比赛。有了这个问题,主队之前是在主场还是客场比赛都没有关系。他们只需要成为上一场比赛的球队之一。
和以前一样,应该只使用当前赛季的比赛,如果任何一支球队在赛季中没有打过 5 场比赛,那么 totalGoals 应该保持为 NULL。
我可以使用 PL/SQL 做到这一点,但我更喜欢 SQL 查询。昨天的解决方案比我的 PL/SQL 快大约一千倍。
谢谢塔姆斯