根据值(“赢”或“输”)显示赢/输次数的 SQL SELECT 语句

Car*_*dez 5 mysql sql select

我正在使用的 Tenis 数据库包含匹配的行。该行包含玩家姓名和条件(获胜或失败)。我需要显示一个表格,其中包含所有玩家,其中显示玩家姓名、总比赛数、获胜次数、失败次数和获胜百分比。

我还没有弄清楚如何正确设置 SELECT 语句来执行我需要的操作。从某个地方开始是:

SELECT player, COUNT(player) FROM tenis_table GROUP BY player

按玩家分组显示每个唯一的玩家名称,而 COUNT(玩家) 则提供玩过的游戏总数。但是,如何正确创建一个 SQL SELECT 语句,该语句还根据“获胜”或“失败”的条件为我提供一列包含获胜次数、失败次数和获胜百分比的列?

Rob*_*Kee 6

实际上,您应该只要求玩家、TotalGames 和 Wins。其他一切都应该在您的代码中完成,但这里是为了防止您绝对想偏离良好的设计:

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
Run Code Online (Sandbox Code Playgroud)

此外,COUNT(player) 将为您提供组中的记录总数,前提是player不为空。COUNT(*) 我相信稍微快一些,因为它不必检查每个记录player是否为空,所以我已经切换到它。

  • @RobertMcKee 嘿伙计,谢谢你。学习新东西总是感觉很好。我在代码上计算损失和获胜百分比。哦,“条件”是一个保留字(它确实是表中的名称),我必须更改该列。非常感谢! (2认同)