sql语句中如何实现按多组求sum

2025-04-02 09:57:19
推荐回答(3个)
回答1:

真不知道为什么你们总会搞出这些奇奇怪怪的问题 SQL的精髓在于如何用最小的代价完成最高的工作量 而不是在搞这些奇奇怪怪的问题
每次出现这种问题,你们首先第一件事应该是问自己 表设计错了没有
我知道 很多时候是遗留系统 或者你们使用了某种开发库 为了接口而不得不再一条SQL语句中完成这些乱七八糟的工作 那么 你们可以考虑把数据导出来放到应用程序中 如C#,JAVA等来完成功能。
要谨记,SQL,数据库 只是用来帮你管理数据 而不是用来完成业务逻辑!即便要完成业务逻辑,那也是存储过程的事!

这是测试用例 oracle写的:

create table test(a integer,b varchar2(10),c varchar2(10));

1 "a" "b"
2 "c" "b"
3 "a" "d"

insert into test values(1,'a','b');
insert into test values(2,'c','b');
insert into test values(3,'a','d');

commit;
select*from test;

select t1.b,t1.c,t1.sum_a,t2.sum_a from (select b,c,sum(a) as sum_a from test group by b,c) t1,
(select b,sum(a) as sum_a from test group by b) t2
where t1.b=t2.b(+)
order by t1.sum_a asc;

回答2:

Select T1.b,T1.c,T1.s1,T2.s2 From
(
Select b,c,sum(a)s1 From 表 Group By b,c
)T1 Join
(
Select b,sum(b)s2 From 表 Group By b
)T2 On T1.b=T2.b

回答3:

select b,c,sum(a),(select sum(a) from A as B where A.b=B.b group by b) from A group by b,c order by sum(a)