oracle 分组 top10 sql,oracle sql 合龙 分组 聚合函数

oracle sql 合并 分组 聚合函数

工作中有一需求,要根据多个表的数据统计情况来更新另外一个表中的某个字段,折腾了会才写出如下sql:

--最终版更新语句

update moka_user_usage t

set portfolionumber = (select ta.pnum

from (select sum(pnum) pnum, pomuid

from ((select count(om.userid) pnum,

om.userid pomuid

from MOKA_PORTFOLIO p,

MOKA_PORTFOLIO_CATEGORY c,

om_user om

where p.type_id = c.type_id and

p.verify_flag = '1' and

p.open_flag = '0' and

om.userid = p.user_id

-- and t.userid = om_user.userid

group by om.userid) union all

select *

from (select count(mom.username) mctnum,

mom.userid mctuid

from mct_works_type_mapping mtp,

mct_works mct,

om_user mom

where mtp.works_id =

mct.works_id and

mct.cp_id =

mom.username and

mct.state = '1'

group by mom.userid))

group by pomuid

) ta

where ta.pomuid = t.userid)

当然这个和业务相关,我贴出来只想记录下。

在写这个sql时,遇到个小问题,不知该如何解决,问题意思大概如下:

有两个表ta(num1,id1) tb(num2,id2)

ta表数据如下:

NUM1ID1

1100

2101

5107

4108

9210

tb的数据如下:

NUM2ID2

3100

8104

5301

10101

20710

45107

要将ta和tb中的数据合并,如果ta和tb中id相同的话,则把num1和num2相加,开始没想要分组,

其实很简单,sql如下:

select sum(num1), id1

from (select *

from TESTA a

Union All

select * from TESTB b)

group by id1

顺便温故了下sql,union all 为合并两个结果集,不会合并重复的行,而union 则会合并重复的行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值