如何在SQL中为count列的分组统计结果添加总计行
给SQL分组查询添加总计行的解决方案
你的原SQL语句如下:
select Code, count(Code) from Table group by Code
要在查询结果中添加总计行,有两种常用实现方式:
方法一:使用UNION ALL拼接总计行
通过将原分组查询和单独统计总行数的查询结果拼接,得到包含总计的完整结果:
-- 分组统计各Code的数量 select Code, count(Code) as Count from Table group by Code union all -- 统计所有行的总计数量 select '总计' as Code, count(Code) as Count from Table
注意:如果
Code是数值类型,需要将'总计'转换为对应类型(比如用CAST('总计' AS VARCHAR(10))),或者用NULL代替后在业务层处理显示文本。
方法二:使用ROLLUP函数(推荐)
大部分主流数据库(MySQL、SQL Server、Oracle等)支持ROLLUP函数,它会自动生成分组的总计行,搭配COALESCE函数可以将默认的NULL替换为"总计"文本:
select coalesce(Code, '总计') as Code, count(Code) as Count from Table group by rollup(Code)
ROLLUP会在分组结果末尾添加一行总计,coalesce函数用于把Code列的NULL值替换成我们需要的"总计"标识。
内容的提问来源于stack exchange,提问作者user17084213
相关产品推荐
相关产品推荐

