我有一个名为games的表:
id player_a_id player_b_id player_a_result player_b_result turn
1 1 2 1 0 1
2 3 4 1 0 1
3 1 3 1 0 2
我正在尝试编写一个SQL查询,该查询将生成表的评级列表。像这样:
player_id total score
1 2
2 0
3 1
4 0
我不确定如何编写sql。一些帮助会很棒!
答案 0 :(得分:1)
SELECT player_id, SUM(result)
FROM
(SELECT player_a_id AS player_id, player_a_result AS result FROM games
UNION
SELECT player_b_id, player_b_result FROM games) AS u
GROUP BY player_id
ORDER BY player_id
这就是我猜你所追求的。这会创建一个子查询(parens()中的东西),它将(UNION)玩家a和b组合成一组,然后按玩家分组并对结果求和。
答案 1 :(得分:0)
嗯..你想怎么得到排名_分数SUM?我的意思是你想要SUM的数字/列?如果需要来自同一列的SUM值,例如:
表示例:
`id` `player_id` `number`
1 1 1
2 2 15
3 1 20
预期结果:
`player_id` sum(`number`)
1 21
2 15
你可以简单地使用它:
SELECT player_id, SUM(`number`) FROM `table` GROUP BY player_id
SUM将计算所有行的结果,GROUP BY必须通过player_id除以总和。 如果您需要获得不同列的总和,则需要准备一个程序。