【发布时间】:2012-06-17 23:53:26
【问题描述】:
我昨天问了一个类似的问题,得到了正确的回答。 SQL requiring self join and ranking 虽然这个问题很相似,但我无法调整答案以适应。
我有一个足球结果表:
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 快了大约一千倍。
谢谢 塔姆斯
【问题讨论】:
-
你认为它如何工作?如果您能够证明您拥有tried something for yourself,您可能会发现您得到了更好的答案质量并且人们更愿意帮助您。
-
@Ben - 直到昨天我才听说过分析函数。我建议它需要某种形式的排名和自我加入。我完全错了。我经常发现最好不要让程序员走上一条特定的路线,因为这可能会导致他们走上一条错误的道路,如果我什么都没说,他们就不会走上这条路。我已经能够针对各种其他查询调整昨天的解决方案,但由于它的编写方式,按照要求,我很难看到我如何为此目的调整它。
-
是的,每个人都在帮助您,但没有任何金钱奖励。如果有人要求这样做;单击
<flag>链接并解释版主发生了什么。如果您有时间,如果您阅读我发布的链接,我将不胜感激。 -
不是每个人,本。有些人在帮不上忙时更喜欢在一旁发问。