個人開発者をサポートするQ&Aツール

個人開発者・フリーランスエンジニア・リモートプログラマの
問題解決をサポートするサービスです

登録不要ですぐに質問を開始できます

Group Byによる異なる2つのCountが取れない

解決済 20pt 1件

従業員テーブル(employee)で社員番号(id)ごとのカウント件数と、削除フラグ(del)が立っている件数をそれぞれ取得したいと考えています

これを取得するためにMySQLで、以下のクエリーを実行しています

SELECT 
	COUNT(s.`id`) ,
	COUNT(COALESCE(e.`del`,'0') ) 
FROM 
	employee AS e
	LEFT OUTER JOIN `salary` s ON e.`id` = s.`id` 
GROUP BY 
	e.`id`

しかしこのクエリーだと、社員番号(id)とのカウント件数と削除フラグ(del)が同じ数値となってしまい、目的の削除フラグの件数が取得できません

よろしくお願いします
php mysql
ベストアンサーに選ばれた回答
多分ですけど、Countの使い方を誤ってる気がしますね

Count関数は、その行数を取得する目的で使用します
ですから、削除フラグのトータル件数を取得したいのであればSUM()を使う必要があります

SELECT 
	COUNT(s.`id`) ,
	SUM(COALESCE(e.`del`,'0') ) #  COUNT → SUM
FROM 
	employee AS e
	LEFT OUTER JOIN `salary` s ON e.`id` = s.`id` 
GROUP BY 
	e.`id`

回答の編集

この質問はすでに終了しているため変更できません


回答

この質問はすでに終了しているため、回答できません