我在SQL查询中使用sum()寻求帮助:
任务:计算所有玩家的锦标赛胜利。 (每位玩家一个号码)(battles.result = 1表示Player1获胜)
SELECT members.id, members.name,
(
SELECT SUM(battles.result = 1)
FROM battles
WHERE members.id = battles.player1 AND battles.result=1 order by battles.gametime
( as wins,
FROM members
下一步:每两位玩家只计算一次结果。
因此,如果两个玩家有多个结果,则只计算第一个结果(第一个游戏时间)。
我已经尝试过使用battles.player2的订单,但我想有更好的解决方案?
答案 0 :(得分:1)
您可以通过join和aggregation轻松获得结果。尝试:
SELECT A.id, A.name, SUM(IFNULL(B.result,0)) wons
FROM members A LEFT JOIN battles B
ON A.id=B.player1
GROUP BY A.id, A.name;