我正在使用的 Tenis 数据库包含匹配的行。该行包含玩家姓名和条件(获胜或失败)。我需要显示一个表格,其中包含所有玩家,其中显示玩家姓名、总比赛数、获胜次数、失败次数和获胜百分比。
我还没有弄清楚如何正确设置 SELECT 语句来执行我需要的操作。从某个地方开始是:
SELECT player, COUNT(player) FROM tenis_table GROUP BY player
按玩家分组显示每个唯一的玩家名称,而 COUNT(玩家) 则提供玩过的游戏总数。但是,如何正确创建一个 SQL SELECT 语句,该语句还根据“获胜”或“失败”的条件为我提供一列包含获胜次数、失败次数和获胜百分比的列?
实际上,您应该只要求玩家、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是否为空,所以我已经切换到它。