我正在使用的 Tenis 数据库包含作为匹配项的行。该行包含玩家名称和条件(赢或输)。我需要显示一个包含所有玩家的表格,显示玩家姓名、总游戏数、获胜次数、失败次数和获胜百分比。
我还没有弄清楚如何正确设置 SELECT 语句来执行我需要的操作。从哪里开始:
SELECT player, COUNT(player) FROM tenis_table GROUP BY player
按玩家分组显示每个唯一的玩家名称,COUNT(player) 给出玩过的游戏总数。但是,我如何正确地创建一个 SQL SELECT 语句,该语句还根据“赢”或“输”的条件为我提供一个列,其中包含赢、输和赢的百分比?
最佳答案
实际上,您应该只询问玩家、总游戏数和获胜次数。其他一切都应该在您的代码中完成,但这里是为了防止您绝对想偏离良好的设计:
SELECT player,
COUNT(*) AS TotalGames,
SUM(CASE WHEN condition='win' THEN 1 ELSE 0 END) AS Wins,
COUNT(*)-SUM(CASE WHEN condition='win' THEN 1 ELSE 0 END) AS Losses,
-- SUM(CASE WHEN condition='loss' THEN 1 ELSE 0 END) AS Losses,
SUM(CASE WHEN condition='win' THEN 1 ELSE 0 END)*100/COUNT(*) AS WinPercentage
FROM tenis_table
GROUP BY player
此外,只有当 player
不为空时,COUNT(player) 才会为您提供组中记录的总数。我认为 COUNT(*) 稍微快一些,因为它不必检查每条记录的 player
是否为 null,所以我切换到那个。
关于mysql - SQL SELECT 语句显示基于值 ("win"或 "loss"的赢/输数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34638841/