0

我有一张名为游戏的桌子:

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。一些帮助会很棒!

4

2 回答 2

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 组合成一组,然后按玩家分组并对结果求和。

于 2012-05-14T20:21:32.727 回答
0

嗯..你想如何获得ranking_score 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。如果需要获取不同列的总和,则需要准备一个过程。

于 2012-05-14T20:01:34.107 回答