サイトアイコン こじりふぁ

分析関数 COUNT

分析関数でCOUNTを使用するサンプルSQLを紹介します。

分析関数 COUNT サンプルSQL

前提条件

SELECT
    EMP_ID  AS 従業員ID
  , DEPT_ID AS 部署ID
  , NAME    AS 名前
FROM
    TB_EMP
;

  従業員ID 部署ID     名前
---------- -------- ------------
         1 01       山田太郎
         2 01       山田二郎
         3 02       田中太郎
         4 02       田中二郎
         5 02       田中三郎

6行が選択されました。

従業員が所属する部署の人数を求める

SELECT
    EMP_ID  AS 従業員ID
  , DEPT_ID AS 部署ID
  , COUNT(*) OVER(PARTITION BY DEPT_ID)
            AS 部署毎の従業員人数
FROM
    TB_EMP
;

   従業員ID  部署ID   部署毎の従業員人数
---------- -------- ------------------
         1 01                        2
         2 01                        2
         3 02                        3
         4 02                        3
         5 02                        3

5行が選択されました。

『COUNT(*)』で件数(人数)を求めています。そして、『OVER(PARTITION BY DEPT_ID)』を指定することで、部署ID毎で件数(人数)を求めるという意味になります。

3人以上が所属している部署の従業員を全て抽出

SELECT
  VW.EMP_ID  AS 従業員ID
 ,VW.DEPT_ID AS 部署ID
 ,VW.CNT     AS 件数
FROM
  (
    SELECT
        EMP_ID  AS EMP_ID
      , DEPT_ID AS DEPT_ID
      , COUNT(*) OVER(PARTITION BY DEPT_ID)
                AS CNT
    FROM
        TB_EMP
  ) VW
WHERE
  VW.CNT >= 3
;

   従業員ID 部署ID          件数
---------- -------- ----------
         3 02                3
         4 02                3
         5 02                3

分析関数を使ったSQLを副問合せにすることで、分析関数の抽出結果(集計結果)を抽出条件として絞り込み検索を行う事ができます。