以下このクエリ:このmysqlクエリを修正して勝率を表示するにはどうすればよいですか?
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 |
+---------+-------------+
(各プレイヤーがゲームの異なる数を果たしていることのように)私が表示したいです余分な列の '勝率'。
- >これは、各プレイヤーがプレイしたゲームの数に基づいています。私は期待していた
+---------+-----------+---------------+---------+ | member | Wins | Games Played | Win % | +---------+-----------+---------------+---------+ | Player 1| 4 | 8 | 0.50 | | Player 2| 3 | 3 | 1.00 | | Player 3| 3 | 5 | 0.60 | +---------+-----------+---------------+---------+
: - %を出力すると、MySQLの中で直接可能でないならば、小数点以下は、どのように私は以下のように出力を生成するために、私の既存のクエリを修正することができ0.76
すなわち罰金だろう
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
しかし、それは私がそれがどのように動作するかを見て非常に大まかな希望を推測する。
あなたはまだあなたのデータベーススキーマを変更することはできますか? 「ゲーム」(参加者1人につき1つ)あたり2つのレコードを持つテーブルは、扱いやすくなります。 – Mr47
私はできますが、私は好きではないでしょう... – RDowns