InterBase クイック スタート:Part IV - 集計関数の利用

提供: InterBase

InterBase クイック スタート:Part IV - データの抽出 へ戻る

SQL は、値のグループから 1 つの値を算出する、集計関数を提供しています。 値のグループとは、指定された行セットの特定の列における全データを指します。集計関数は、SELECT 句において、または、値を指定する SELECT 文のいずれかの場所で、使用することができます。

次のテーブルは、InterBase でサポートされている集計関数の一覧です:

関数 機能
AVG(value)

値のグループの平均値を返す

COUNT(value)

値のグループの値の数をカウントする

MIN(value)

値のグループの最小値を返す

SUM(value)

値のグループの合計数値を返す

Image 025.jpg 集計関数を使用する

  1. 次の文を入力して、異なるジョブ コードが、Job テーブルにいくつあるか検索します:
    SELECT COUNT(job_code)
    FROM   Job
    
  2. しかし、このクエリでは重複したジョブ コードもカウントに含んでいるので、想定していたものとは異なります。 一意のジョブ コードのみを数えるには、次のように DISTINCT キーワードを使用します:
    SELECT COUNT(DISTINCT job_code)
    FROM   Job
    

    14 個のジョブ コードがあるのが分かります。

  3. 次を入力し、Department テーブルから部署の平均予算を抽出します:
    SELECT AVG(budget)
    FROM   Department
    

    結果は 648095.23 です。

  4. 1 つの SELECT で、複数の集計関数を抽出することができます。 次の文を入力し、社員数、もっとも早い雇用日、すべての社員に払われた給与の合計を抽出してみましょう:
    SELECT COUNT(emp_no),
           MIN(hire_date),
           SUM(salary)
    FROM   Employee
    

Image 025.jpg 集計関数と NULL 値

集計計算にかかわる値が NULL か不明だった場合、関数は、誤った結果とならないよう、その行全体を無視します。 たとえば、50 行以上の平均を計算する際、10 行に NULL 値が含まれていたならば、平均の計算は 40 行に対して(50 行ではなく)行われます。 集計関数 が NULL 行を無視することを確認するには、次のテストを実行してみてください:

  1. Department テーブルのすべての行を抽出します:
    SELECT dept_no,
           mngr_no
    FROM   Department
    

    21 行あり、そのうち 2 行は mngr_no列に NULL 値があります。

  2. さあ、mngr_no 列で行をカウントしてみましょう:
    SELECT COUNT(mngr_no)
    FROM   Department
    

    結果は 17。21 ではありません。 COUNT は、NULL 値の行をカウントしません。

次は: