sql分组查询后对数据进行合并?

作者站长头像
站长
· 阅读数 6

有如下两张表:

1、区域表

CREATE TABLE `sys_area` (
  `id` int(11) NOT NULL,
  `name` varchar(100) DEFAULT NULL COMMENT '区域名称',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

2、数量表

CREATE TABLE `sys_count` (
  `id` int(11) NOT NULL,
  `areaid` int(11) DEFAULT NULL COMMENT '区域id',
  `count` int(11) DEFAULT NULL COMMENT '数量',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

根据区域统计数量表获取每个区的数量

SELECT area.`name`, sum(a.count) as count 
FROM sys_count a
LEFT JOIN sys_area area ON a.areaid = area.id
GROUP BY areaid

获得结果如下:

countname
28A区
18B区
19C区
26D区

问题:现在需要将A和B区的数据合并起来算作A区的数据

期望的是:

countname
46A区+B区
19C区
26D区

SQL应该如何调整

回复
1个回答
avatar
test
2024-07-01
SELECT 
    CASE 
        WHEN `name` IN ('A区', 'B区') THEN 'A区+B区'
        ELSE `name`
    END AS `name`, 
    SUM(count) as count 
FROM (
    SELECT area.`name` as `name`, SUM(a.count) as count 
    FROM sys_count a
    LEFT JOIN sys_area area ON a.areaid = area.id
    GROUP BY area.`name`
) as subquery
GROUP BY `name`

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容