zukucode
主にWEB関連の情報を技術メモとして発信しています。

SQL 指定した条件にマッチする行のみカウントする

SQLで指定した条件にマッチする行のみカウントする方法を紹介します。

employee(社員)
idfirst_namelast_nameage
1一郎山田20
2次郎山田30
3三郎田中40
4一郎山田20

集計関数のCOUNTは、値がNULLのデータはカウントしないため、これを利用します。

SELECT
  COUNT(1), --4
  COUNT(CASE WHEN age <= 30 THEN 1 ELSE NULL END), --3
FROM
  employee

重複データは1カウントとしたい場合はSQL 重複した値を除いた件数をカウントするで紹介したように、DISTINCTを使用します。

SELECT
  COUNT(1), --4
  COUNT(CASE WHEN age <= 30 THEN 1 ELSE NULL END), --3
  COUNT(DISTINCT CASE WHEN age <= 30 THEN last_name || first_name ELSE NULL END), --2
FROM
  employee

条件にマッチする行のみを集計したいときに、WHERE句に条件を指定して、レコード自体を絞り込むこともありますが、1度にいろいろな条件の値を集計したい場合は、集計関数にCASE文を追加して、集計する条件を指定する方法が便利です。


関連記事