Sql总结了不同的行

时间:2012-05-14 19:56:21

标签: sql

我有一个名为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。一些帮助会很棒!

2 个答案:

答案 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除以总和。 如果您需要获得不同列的总和,则需要准备一个程序。