mysql - SQL获取每个PlayerID的行总和

标签 mysql sql sum

我的布局看起来像这样:

Player:
PlayerID - PlayerName

Exp
ExpID - PlayerID - ExpChange

我想做的是获取每个玩家名称的 ExpChange 总和,并按 expchange 总和排序。 (以SUM(ExpChange)为分数的高分榜单。

这是我目前所拥有的:

SELECT Player.PlayerName, Exp.ExpChange
FROM Player
INNER JOIN Exp
ON Player.PlayerID=Exp.PlayerID
ORDER BY Exp.ExpChange;

但现在我需要以某种方式根据该玩家的交换总和对每个玩家进行排序。这可能吗?我试着搜索了一吨,但找不到任何东西。谢谢

附言我也尝试过这样的事情:

SELECT Player.PlayerName, SUM(Exp.ExpChange) AS exp
FROM Player
INNER JOIN Exp
ON Player.PlayerID=Exp.PlayerID
ORDER BY exp;

但它只是输出每个人的总 ExpChange,而不是每个玩家。

最佳答案

您需要添加一个 GROUP BY 子句来获取每个 playersum():

SELECT Player.PlayerName, SUM(COALESCE(Exp.ExpChange, 0)) AS exp
FROM Player
LEFT JOIN Exp
   ON Player.PlayerID=Exp.PlayerID
GROUP BY Player.PlayerName
ORDER BY exp;

如果您只想要在 exp 表中匹配的记录,那么您可以使用 INNER JOIN:

SELECT Player.PlayerName, SUM(Exp.ExpChange) AS exp
FROM Player
INNER JOIN Exp
   ON Player.PlayerID=Exp.PlayerID
GROUP BY Player.PlayerName
ORDER BY exp;

关于mysql - SQL获取每个PlayerID的行总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14164103/

相关文章:

mysql - 仅将特定行从一个表复制到另一个表,并为每行信息创建一个新行

php - 如何使用 bash 脚本在 MySQL 中赋值

sql - Oracle Sql Dev 中 COMPILE 和 COMPILE WITH DEBUG 之间的区别?

python - 为什么 numpy.sum 没有给我正确的结果?

mysql - 为什么 COALESCE() 不起作用?

mysql - Sql 结果后将两列相同的 id 相加

mysql - 当用户单击表格行时显示详细信息

MySQL,返回最近X小时内的所有结果

sql - 在 Pivot SQL 查询中为字段名称添加别名

javascript 数组值的总和