首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据oracle中的列获取行的总和

根据oracle中的列获取行的总和
EN

Stack Overflow用户
提问于 2013-08-28 19:33:22
回答 4查看 9.1K关注 0票数 0

我想将一列的值按另一列分组求和。e.g

代码语言:javascript
运行
复制
Month     Count
Jan         5
Jan         7
Feb         1
Feb         2

我想要

代码语言:javascript
运行
复制
Month     Count   Status
Jan         5       A
Jan         7       B
Jan        12      SUM
Feb         1       A
Feb         2       B
Feb         3      SUM
EN

回答 4

Stack Overflow用户

发布于 2013-08-28 19:47:04

其中一种方法是使用rollup。但是,因为您需要原始数据,所以此方法通过rownum对汇总执行“假”聚合:

代码语言:javascript
运行
复制
select Month, sum(Count),
       (case when rn is null then 'SUM' end) as status
from (select rownum as rn, t.*
      from t
     ) t
group by Month, rollup(rn)

我不确定您在status列中提到的AB是什么意思。

票数 3
EN

Stack Overflow用户

发布于 2013-08-28 19:48:17

原始表:

代码语言:javascript
运行
复制
CREATE TABLE test
(
    month CHAR(3), 
    num INT,
    status CHAR(3)
);

INSERT INTO test (month, num, status) VALUES
    ('Jan', 5, 'A'),
    ('Jan', 7, 'B'),
    ('Feb', 1, 'A'),
    ('Feb', 2, 'B');

查询:

代码语言:javascript
运行
复制
SELECT month, sum(num) AS num, 'SUM' AS status
FROM test
GROUP BY month
UNION
SELECT month, num, status
FROM test
ORDER BY month DESC, status

结果:

代码语言:javascript
运行
复制
MONTH   NUM   STATUS
Jan     5     A
Jan     7     B
Jan     12    SUM
Feb     1     A
Feb     2     B
Feb     3     SUM

Here是SQLfiddle。

票数 1
EN

Stack Overflow用户

发布于 2013-08-28 19:46:52

代码语言:javascript
运行
复制
select month, sum(count) from table group by rollup(month, count);

如果你想避免使用month is not null,它也会给出净合计。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18486704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档