2016-05-20 8 views
0

各1つのカウント気にいら複数coloumnsを選択し、これは「Empo」私のテーブルです:SQLカウントを持ついくつかのcoloumnsを表示するとき、私は問題を抱えている

 
idEmp DeptA DeptB 
---- ---- ----  
1  23  7  
2  42  23 
3  23  11 
4  23  17 

そして私はidEmpの数、および数をカウントします「23」は、すべての部門である時間は、このような何かを得るために:

 
count(id) count(DeptA) count(DeptB) 
----  ----   ----  
4   3    1 

私が持っている別のテーブル「ラポール」

 
idRap DeptA bonnus 
---- ---- ----  
1  23  200  
2  42  23 
3  23  346 
4  77  44 

とDeptAのボーナス合計も取得したい

どのようにMySQLでこれを行うのですか?

は、私が過去に使用している方法は、カウントと合計の組み合わせを使用することで、あなたに

+0

あなたはDeptAためbonnusの合計をしたいか、あなたが23でフィルタリングさDeptAためbonnusの合計をしたいですか? – Chris

+0

23の –

答えて

0

に感謝します。

select count(idEmp), 
sum(Case when DeptA = 23 Then 1 else 0 End), 
sum(Case when DeptB = 23 Then 1 else 0 End) 
from tableX 

質問の編集 元の数に重複が追加されないように、新しいケースに副選択を使用します。下記参照。

select count(idEmp) as RecordCount, 
sum(Case when DeptA = 23 Then 1 else 0 End) as DeptA23Count, 
(select sum(bonnus) from Rapport where DeptA = 23) as BonnusForDeptA23, 
sum(Case when DeptB = 23 Then 1 else 0 End) as DeptB23Count, 
from tableX 

基準に応じて、

+0

グレートザッツによってフィルタリングDeptAためbonnusの合計は修正答え –

+0

に動作します、私は副選択を考えなかったあなたに感謝 しかし、私は、パフォーマンスのために良いとは思いませんでした それを何ですか? – Chris

+0

を参照してください@AymenYasser –

0

試し:クエリ以下

SELECT COUNT(idEmp) AS id, 
    SUM(IF(DeptA = 23,1,0)) as COUNT_DeptA, 
    SUM(IF(DeptB = 23,1,0)) as COUNT_Deptb 
FROM youtTable; 
+0

は私のために働いていません –

+0

@BerndBuffen数えきれないくらい大括弧:) – Chris

+0

Ups my iPhone。私はチャンス私の答えをhabe –

0

試してください: -

select (select count(id) from test) as countID, 
(select count(DeptA) from test where DeptA=23) as CountDeptA, 
(select count(DeptB) from test where DeptB=23) as CountDeptB