統計查詢-根據條件進行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得到統計總數。

建立視圖的思想是提高靈活性。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM