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

新手上路,请多包涵

有如下两张表:

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应该如何调整

阅读 2.1k
1 个回答
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`

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进