我目前有一个查询表,目前计算基于以前的胜利和失败的人工排名。赢球的队伍记+1,输球的队伍记-1。
到目前为止,我目前已经计算了球队的最终成绩,但我想要的是跟踪连胜的起落。
这里是链接到http://sqlfiddle.com/#!2/d87d8/1SQLFIDDLE
这是我要找的:
Team | Streak
'Team A' 0
'Team B' 0
'Team C' 0
'Team D' 0
'Team A' 1
'Team B' -1
'Team C' 1
'Team D' -1
'Team A' 2
'Team B' -2
'Team C' 0
'Team D' 0
'Team A' 1
'Team B' -3
'Team C' 1
'Team D' 1
<标题> 解决SELECT teamName, (
SELECT sum(CASE matchVictory WHEN 1 then 1 else -1 end)
FROM poolOfTeams b
WHERE b.gameId<=temp.gameId
AND b.teamName=temp.teamName) as Streak
FROM temp
GROUP BY teamName, gameId
ORDER BY teamName, gameId;
使用Dwayne Towell提供的select语句,我只需要插入一个case语句
标题>试着这样做:
SELECT gameId, teamName, (
SELECT sum(matchVictory)
FROM temp b
WHERE b.gameId<=temp.gameId
AND b.teamName=temp.teamName) as Streak
FROM temp
GROUP BY teamName, gameId
ORDER BY gameId, teamName;
假设胜利和失败分别用1/-1表示。订单和你想要的不完全一样,但也许你可以从这里解决。
可能有一种方法可以在窗口函数中做到这一点,但是你没有