统计查询-根据条件进行count的两种实现方式- oracle

 Sql语句:
select b.departmentname, b.name, 
       count(case when b.businessstate='NOTSUBMIT' then 1  else null end ) NOTSUBMIT, 
        count(case when b.businessstate='ABANDONED' then 7  else null end ) ABANDONED,
        count(b.id) allCounts
from business b group by b.departmentname, b.name

通过case when then else end这句话来限定条件,count进行统计。

另外,可以先建一张视图,通过sum来进行统计:

视图:

create or replace view view_business_statistics as
select b.id, b.name as BUSINESSNAME,b.DEPARTMENTNAME,b.sldate as SLDATE, b.applydate as APPLYDATE,
         decode(b.businessstate,'NOTSUBMIT',1,0) as NOTSUBMITNUM,
         decode(b.businessstate,'APPROVING',1,0) as APPROVINGNUM,
from business b;

通过sum进行统计的sql语句:

select b.departmentname, b.name, 
       sum(b.NOTSUBMITNUM) NOTSUBMIT, 
       sum(b.ABANDONED) ABANDONED,
       count(b.id) allCounts
from business b group by b.departmentname, b.name

建立视图使用oracle自带的decode关键字(相当于case when),重新给列复制0和1,使用sum得到统计总数。

建立视图的思想是提高灵活性。


 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值