sql 分组求和 同时满足2个条件,再把求和结果相加

sql 分组求和 同时满足2个条件,再把求和结果相加,第1张

用 union 做多查询连接

SELECT A, SUM(real_qty) AS qiuhe, B

FROM AA

GROUP BY A, B

HAVING (B = '小明')

ORDER BY item_barcode

union

SELECT A, SUM(real_qty) AS qiuhe, B

FROM AA

GROUP BY A, B

HAVING (B = '小 花')

ORDER BY item_barcode

union

SELECT ''as a, SUM(real_qty) AS qiuhe, '' as b

FROM AA

GROUP BY A, B

group by一般用于将查询结果分组,多配合聚合函数,sum,count,min,max等一起使用。

如表名test,数据如下

id grade

1 10

1 50

2 30

2 40

3 20

如果按照id,求grade的和,则可以

select id,sum(grade) as grade from test group by id

结果就是

id grade

1 60

2 70

3 20

注意:count,min,max函数等也是同样道理

但有时,group by也配合having使用,如上边的例子,如果要查询grade的和大于50的id及grade的和,就可以这样使用

select id,sum(grade) as grade from test group by id having sum(grade)>50

结果如下:

id grade

1 60

2 70

select max(时刻值)

,min(时刻值)

from (select 日期 时刻 名称 类型 等级 sum(时刻值)

from TO

group by 日期 时刻 名称 类型 等级)

select 单位,sum(case when 月份=1 then 金额 end) as 金额月份1 ,

(case when 月份=2 then 金额 end) as 金额月份2 ,

(case when 月份=3 then 金额 end) as 金额月份3 ,

from 表

group by 单位

真不知道为什么你们总会搞出这些奇奇怪怪的问题 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;

selectfrom test;

select t1b,t1c,t1sum_a,t2sum_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 t1b=t2b(+)

order by t1sum_a asc;

以上就是关于sql 分组求和 同时满足2个条件,再把求和结果相加全部的内容,包括:sql 分组求和 同时满足2个条件,再把求和结果相加、数据库问题,group by之后,某一类相似的数据怎么进行累加、sql 分组求和,取各组极值,求高手等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9475812.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存