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

SQL分组查询问题:ORG-4按Unit子串分组其余按Organization分组

问题解决:按条件分组统计记录数

问题分析

你当前的GROUP BY子句同时使用了agency和substring(unit,1,3),这会导致非"ORG-4"的记录也被substring(unit,1,3)拆分分组,不符合需求。正确的做法是让GROUP BY的逻辑和SELECT里的CASE表达式完全一致——直接按CASE的结果分组。

修正后的SQL语句

SELECT 
  CASE
    WHEN agency = 'ORG-4' THEN substring(unit, 1, 3)  
    ELSE agency 
  END AS agency1, 
  count(*) AS count
FROM km_agency 
GROUP BY CASE
           WHEN agency = 'ORG-4' THEN substring(unit, 1, 3)  
           ELSE agency 
         END;

如果你的数据库支持按列别名分组(比如MySQL 8.0+、PostgreSQL等),可以简化成:

SELECT 
  CASE
    WHEN agency = 'ORG-4' THEN substring(unit, 1, 3)  
    ELSE agency 
  END AS agency1, 
  count(*) AS count
FROM km_agency 
GROUP BY agency1;

结果说明

修正后的语句会:

  • 对agency为"ORG-1"、"ORG-2"、"ORG-3"的记录,直接按原agency值分组统计总数
  • 对agency为"ORG-4"的记录,按unit字段的前3个字符分组统计数量
    最终得到的结果与你期望一致:
Agency1count
ORG-121
ORG-216
ORG-385
NOR8
SOU6

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 00:47:08