You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL按match_id聚合统计每场比赛双方获胜局数的SQL实现

PostgreSQL 按比赛统计双方获胜局数

你可以用条件聚合函数实现需求,核心是在SUM()里嵌套CASE WHEN语句,逐局判断胜负后累加计数:

SELECT
    match_id,
    -- 统计player_one获胜局数:p1得分高于p2时计1,否则0
    SUM(CASE WHEN p1_game_result > p2_game_result THEN 1 ELSE 0 END) AS player_one_wins,
    -- 统计player_two获胜局数:p2得分高于p1时计1,否则0
    SUM(CASE WHEN p2_game_result > p1_game_result THEN 1 ELSE 0 END) AS player_two_wins,
    -- 可选:统计平局局数(若存在得分相等的情况)
    SUM(CASE WHEN p1_game_result = p2_game_result THEN 1 ELSE 0 END) AS draw_games,
    -- 总局数(和你现有查询逻辑一致,可选保留)
    COUNT(*) AS total_games
FROM
    your_table_name -- 替换为你的实际表名
GROUP BY
    match_id
ORDER BY
    match_id;

逻辑说明:

  • CASE WHEN逐行判断单局胜负关系,符合条件返回1,否则返回0
  • SUM()将同一match_id下的所有局判断结果累加,得到该场比赛的总胜场数
  • 若数据中无平局或不需要统计平局,可直接删除draw_games字段

示例结果:

假设表数据如下:

match_idp1_game_resultp2_game_result
11512
11015
1158
21513
21415

执行查询后会得到:

match_idplayer_one_winsplayer_two_winsdraw_gamestotal_games
12103
21102

内容的提问来源于stack exchange,提问作者Piotr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 16:15:42