oracle sum求和的区别

chg198455 2015-03-23 10:09:49
不多说,看两个语句说说区别
语句一:
select sum(A.a),sum(B.b) from A, B where A.key=B.key

select c.suma, d.sumb from
(select A.key as key,sum(A.a) as suma from A group by A.key) C,
(select B.key as key,sum(B.b) as sumb from B group by B.key) D
where c.key=d.key

请问这两个求和语句的结果一样吗,据图区别是啥呢
...全文
420 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zbdzjx 2015-03-27
  • 打赏
  • 举报
回复
一对多的情况下,第一个语句结果会翻倍。
chg198455 2015-03-25
  • 打赏
  • 举报
回复
结贴,最后试了一下,第二种方法是对的,感谢朋友的建议,以后请多多指教
chg198455 2015-03-25
  • 打赏
  • 举报
回复
引用 1 楼 wildwave 的回复:
不一样,如果是你写的这个语句,前一条求和变成一条记录,更多不一样 如果这一条是 select sum(A.a),sum(B.b) from A, B where A.key=B.key group by a.key 区别如下: 后者,由于对key字段进行了分组,因此a.key和b.key是一对一的 相对的,前者可能有重复,a.key=b.key关联以后,可能会是1对多,或多对多的关系,此时求和就可能产生重复相加
我求的是前一个的大,后一个的好像也大,怎么回事啊
chg198455 2015-03-25
  • 打赏
  • 举报
回复
引用 楼主 chg198455 的回复:
不多说,看两个语句说说区别 语句一: select sum(A.a),sum(B.b) from A, B where A.key=B.key select c.suma, d.sumb from (select A.key as key,sum(A.a) as suma from A group by A.key) C, (select B.key as key,sum(B.b) as sumb from B group by B.key) D where c.key=d.key 请问这两个求和语句的结果一样吗,据图区别是啥呢
前面的计算结果确实比实际的大很多,后面的我还没算
binsweet 2015-03-24
  • 打赏
  • 举报
回复
不一样 前一个是两个表关联后的sum,也就是说只有关联上的记录才被求和; 后一个是分组求和,如果key值不重复,则结果大于或等于第一个结果;如果重复,结果就不好比较了。
小灰狼W 2015-03-23
  • 打赏
  • 举报
回复
不一样,如果是你写的这个语句,前一条求和变成一条记录,更多不一样 如果这一条是 select sum(A.a),sum(B.b) from A, B where A.key=B.key group by a.key 区别如下: 后者,由于对key字段进行了分组,因此a.key和b.key是一对一的 相对的,前者可能有重复,a.key=b.key关联以后,可能会是1对多,或多对多的关系,此时求和就可能产生重复相加

3,490

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧