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


 

第 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`


阅读了下文档,我如果只是想增加项目的灵活度多人分目录开发,这样用不到蓝图的 url 绑定和视图绑定,那蓝图是不是就失去了意义