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

PostgreSQL按条件分组计数:关联两表分组后统计WIN、LOSE数量

实现思路

核心用条件聚合实现不同bet_result值的分别计数,配合两表关联+分组即可得到目标结果。

具体SQL实现

SELECT
  g.league_id,
  COUNT(CASE WHEN al.bet_result = 'WIN' THEN 1 END) AS WIN,
  COUNT(CASE WHEN al.bet_result = 'LOSE' THEN 1 END) AS LOSE,
  COUNT(*) AS GameCnt
FROM Game g
INNER JOIN Analyze_Line al 
  ON g.id = al.game_id
GROUP BY g.league_id;

逻辑说明

  • 首先用INNER JOIN关联两张表,关联条件为Game表的id和Analyze_Line表的game_id匹配
  • 统计WIN计数时,通过CASE WHEN判断bet_result为WIN时返回有效值,COUNT函数只会统计非空值,所以就能得到对应WIN的记录数,LOSE的计数逻辑同理
  • COUNT(*)直接统计分组后每个league_id对应的总记录数,也就是GameCnt
  • 最后按league_id分组输出即可

如果你的SQL环境支持IF函数(比如MySQL),还可以简化成更短的写法:

SELECT
  g.league_id,
  SUM(IF(al.bet_result = 'WIN',1,0)) AS WIN,
  SUM(IF(al.bet_result = 'LOSE',1,0)) AS LOSE,
  COUNT(*) AS GameCnt
FROM Game g
INNER JOIN Analyze_Line al ON g.id = al.game_id
GROUP BY g.league_id;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:36:07