簡體   English   中英

Oracle SQL查詢計數不同的分支

[英]Oracle SQL query count distinct branches

我想做的是知道擁有mgr和沒有mgr的員工數量。 該表是這樣的:

Emp     Branch   Mgr   
EmpA    Branch1  Mgr1  
EmpB    Branch2  Mgr2
EmpC    Branch1  Mgr2
EmpD    Branch1  
EmpE    Branch2  Mgr2
EmpF    Branch1  Mgr2

我想要獲得的輸出是這樣的:

Branch     HasMgr HasNoMgr
Branch1    3      1
Branch2    2      0

已經嘗試過此代碼,但結果錯誤

SELECT branches,
(SELECT COUNT(*) FROM tbl WHERE mgr IS NULL),
(SELECT COUNT(*) FROM tbl WHERE mgr IS NOT NULL )
FROM tbl GROUP BY branches

使用子查詢來匯總所有帶/不帶值的經理。 希望這可以幫助。 謝謝。

SELECT branch,
SUM(case when Mgr is not null then 1 else 0 end) hasmgr,
SUM(case when Mgr is not null then 0 else 1 end) hasnomgr
FROM tbl
GROUP by branch;
With dat as(
Select 'Emp' emp   ,  'Branch' Branch, 'Mgr' as manager  UNION ALL
Select 'EmpA' ,   'Branch1',  'Mgr1'  union all
Select 'EmpB' ,   'Branch2',  'Mgr2' union all
Select 'EmpC' ,  'Branch1' , 'Mgr2' union all
Select 'EmpD' ,   'Branch1'  , null union all
Select 'EmpE'  ,  'Branch2' ,'Mgr2' union all
Select 'EmpF' ,   'Branch1' , 'Mgr2'
)
SELECT Branch,count(manager) hasMgr,sum(case when manager is null then 1 
else 0 end) hasNoMgr FROM dat
group by branch

從TAB1 GROUP BY BRANCH中選擇分支,將sum(decode(mgr,null,0,1))作為“ hasmgr”,將sum(decode(mgr,null,1,0))作為“ hasnomgr”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM