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

SQL实现表A表B内连接后分组按条件统计Count1、Count2、Count3方法

SQL实现方案

你需要的效果可以通过INNER JOIN+条件聚合实现,核心是用CASE WHEN配合聚合函数完成按规则计数,无需嵌套子查询,写法简洁易读。

示例SQL代码

SELECT 
  -- 此处替换为你实际的分组维度字段,比如B表的分类字段、A表的区域字段等
  分组维度1,
  分组维度2,
  -- Count1:三个字段全为'A'时计数
  SUM(CASE WHEN A.Ind1 = 'A' AND A.Ind2 = 'A' AND A.Ind3 = 'A' THEN 1 ELSE 0 END) AS `Count 1`,
  -- Count2:任意字段不为'A'时计数
  SUM(CASE WHEN A.Ind1 <> 'A' OR A.Ind2 <> 'A' OR A.Ind3 <> 'A' THEN 1 ELSE 0 END) AS `Count 2`,
  -- Count3:两者总和,也可以直接写COUNT(*) 效果一致
  COUNT(*) AS `Count 3`
FROM 表A A
INNER JOIN 表B B
  ON A.关联键 = B.关联键 -- 替换为你实际的关联字段
GROUP BY 分组维度1, 分组维度2 -- 和SELECT里的分组维度保持一致

注意事项

  • 如果Ind1/Ind2/Ind3存在NULL值,NULL和'A'做等于/不等于判断都会返回UNKNOWN,不会被计入任何计数,你可以根据需求调整判断逻辑,比如把NULL视为非'A',可以修改判断条件为COALESCE(A.Ind1, '') = 'A'。
  • 上面示例中Count 3直接用COUNT(*)即可,因为INNER JOIN后的所有行必然符合Count1或Count2的规则,比手动相加两列写法更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:06:04