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

如何在单条SQL查询中同时返回分组统计结果与总计值?

如何在分组统计结果中添加总计行

嗨,我明白你的需求了——既要保留按Record分组的统计结果,又要在结果里加上所有分组的总计值,而且想用单条SQL实现对吧?我给你两种常用的解决方案,都能完美解决这个问题:

方法1:使用GROUP BY ROLLUP(推荐)

ROLLUP是SQL标准里的分组扩展语法,它会自动在分组结果的最后添加一行总计行,非常方便。结合你的需求,调整后的SQL应该是这样的:

SELECT 
    COALESCE(CAST(record AS VARCHAR), '总计') AS Record,
    SUM(record_count) AS Record_Count
FROM table_name 
WHERE <conditions> 
GROUP BY ROLLUP(record) 
ORDER BY 
    CASE WHEN record IS NULL THEN 1 ELSE 0 END, -- 让总计行排在最后
    SUM(record_count);

说明:

  • ROLLUP(record)会先按record分组统计,然后自动计算所有行的总计值,此时总计行的record字段会是NULL。
  • 用COALESCE(CAST(record AS VARCHAR), '总计')是把NULL替换成可读性更好的“总计”文本(如果你的数据库里record是数值类型,需要先转成字符串才能和文本拼接)。
  • ORDER BY里的CASE语句是确保总计行排在所有分组行的后面,同时分组行还是按Record_Count排序。

按照你的示例数据,执行后会得到这样的结果:

Record | Record_Count
1 | 55
6 | 97
5 | 108
3 | 119
总计 | 379

方法2:使用UNION ALL合并分组结果和总计

如果你用的数据库不支持ROLLUP(比如一些老版本的数据库),可以用UNION ALL把分组统计和单独计算的总计合并起来,SQL如下:

-- 先查询分组统计结果
SELECT 
    CAST(record AS VARCHAR) AS Record,
    SUM(record_count) AS Record_Count,
    0 AS sort_order -- 标记分组行的排序优先级
FROM table_name 
WHERE <conditions> 
GROUP BY record 
UNION ALL
-- 再查询总计结果
SELECT 
    '总计' AS Record,
    SUM(record_count) AS Record_Count,
    1 AS sort_order -- 标记总计行的排序优先级
FROM table_name 
WHERE <conditions>
ORDER BY sort_order, Record_Count;

简化版(用CTE避免重复写WHERE条件):

如果你的WHERE条件比较复杂,重复写两次太麻烦,可以用公用表表达式(CTE)来简化:

WITH grouped_data AS (
    SELECT 
        record,
        SUM(record_count) AS Record_Count
    FROM table_name 
    WHERE <conditions> 
    GROUP BY record
)
SELECT 
    CAST(record AS VARCHAR) AS Record,
    Record_Count,
    0 AS sort_order
FROM grouped_data
UNION ALL
SELECT 
    '总计' AS Record,
    SUM(Record_Count) AS Record_Count,
    1 AS sort_order
FROM grouped_data
ORDER BY sort_order, Record_Count;

另外,我注意到你原来的SQL里GROUP BY tcpa_code应该是笔误,要改成GROUP BY record才对,不然会和你要分组的字段不匹配哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:37:46