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

Sql语句:
[sql]  view plain  copy
  1. select b.departmentname, b.name,   
  2.        count(case when b.businessstate='NOTSUBMIT' then 1  else null end ) NOTSUBMIT,   
  3.         count(case when b.businessstate='ABANDONED' then 7  else null end ) ABANDONED,  
  4.         count(b.id) allCounts  
  5. from business b group by b.departmentname, b.name  

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

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

视图:

[sql]  view plain  copy
  1. create or replace view view_business_statistics as  
  2. select b.id, b.name as BUSINESSNAME,b.DEPARTMENTNAME,b.sldate as SLDATE, b.applydate as APPLYDATE,  
  3.          decode(b.businessstate,'NOTSUBMIT',1,0) as NOTSUBMITNUM,  
  4.          decode(b.businessstate,'APPROVING',1,0) as APPROVINGNUM,  
  5. from business b;  

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

[sql]  view plain  copy
  1. select b.departmentname, b.name,   
  2.        sum(b.NOTSUBMITNUM) NOTSUBMIT,   
  3.        sum(b.ABANDONED) ABANDONED,  
  4.        count(b.id) allCounts  
  5. from business b group by b.departmentname, b.name  

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值