SQLでグループ内の種類をカウントしたい場合は以下のようにすると、取得できる。
COUNTでNULLをカウントされない仕様を利用しているから、データベースによっては利用できないかも。
(Oracleだと使える。)
社員テーブルの部内の課の種類の数をカウントしている。
sample.sql
SELECT 部
, COUNT(DISTINCT CASE WHEN 課 = 'ABC'
THEN NULL
ELSE 課 END) 課件数
, COUNT(社員ID) 社員件数
FROM 社員
GROUP BY 部