下面这个查询:
SELECT member, count(*) Wins
FROM (SELECT player2_name as member from results
WHERE player1_id = 2 AND player1_result = 'W' AND community_id = 16
UNION ALL SELECT player1_name FROM results WHERE player2_id = 2
AND player2_result = 'W' AND community_id = 16) AS T
group by member ORDER BY Wins DESC
产生如下结果:
+---------+-----------+
| member | Wins |
+---------+-----------+
| Player 1| 4 |
| Player 2| 3 |
| Player 3| 3 |
+---------+-------------+
为了使数据更有用(因为每个玩家可能玩了不同数量的游戏),我想显示一个额外的列“获胜百分比”。
-> 这是基于每个玩家玩/赢的游戏数量。 - 如果在 MySQL 中无法直接输出 %,那么小数就可以了,即 0.76
如何修改现有查询以生成如下输出:
+--------+------------+----------------+----- ----+
|成员(member)|胜利 |玩过的游戏 |赢率% |
+--------+------------+----------------+---------+
|玩家1| 4 | 8 | 0.50 | 0.50
|玩家2| 3 | 3 | 1.00 |
|玩家3| 3 | 5 | 0.60 | 0.60
+--------+------------+----------------+---------+
我希望添加一些内容:
SELECT GamesPlayed FROM (SELECT player1_name as member from results
WHERE player1_id = 2 AND community_id = 16
UNION ALL SELECT player2_name FROM results WHERE player2_id = 2
AND community_id = 16) AS GP
然后在第 1 行:
SELECT member, count(*) Wins, round(sum(wins/GamesPlayed(1),2) WinPercentage
但这只是我对它如何工作的一个非常粗略的充满希望的猜测。
最佳答案
类似这样的吗?
更新的查询
SELECT
T.member
, count(*) Wins
, total.gamesPlayed
, count(*)/total.gamesPlayed as winPercentage
FROM
(
SELECT
player2_name as member
from results
WHERE
player1_id = 2
AND player1_result = 'W'
AND community_id = 16
UNION ALL
SELECT
player1_name
FROM results
WHERE player2_id = 2
AND player2_result = 'W'
AND community_id = 16
) AS T
, (
select
u.member
, sum(u.gamesPlayed) as gamesPlayed
from
(
select
player2_name as member
, count(*) gamesPlayed
from results
where
player1_id = 2
AND community_id = 16
group by player2_name
union
select
player1_name as member
, count(*) gamesPlayed
from results
where
player2_id = 2
AND community_id = 16
group by player2_name
) as u /* union of two */
group by member
) as total
where
T.member = total.member
group by T.member
ORDER BY Wins DESC
关于mysql - 如何修改这个mysql查询以显示获胜百分比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41364787/