我目前有一个查询表,目前计算基于以前的胜利和损失人为排名。对于一个球队来说,一个球队被记入+1,而一个球队的损失则为-1。通过迭代跟踪“条纹”sql
截至目前为止,我现在已经确定了球队的最终数据,但是我期待的是追踪连胜的上升和下降。
这里是链接到http://sqlfiddle.com/#!2/d87d8/1 SQLFIDDLE
这里就是我要找:
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;
使用由德韦恩Towell提供的select语句,我只必须插入一个案例陈述。
我想你应该有一个额外的列,将它们组合在一起,否则没有逻辑分组。例如,为什么要在第一条记录中同时计算游戏ID 1和2,而不是2和3。 –
它可以按teamName分组。所以这会是A队0,A队1,A队2,A队1等 – TaylorM
解释清楚你的桌面很困惑。 – Sathish