InterBase クイック スタート:Part IV - 集計関数の利用
提供: InterBase
InterBase クイック スタート:Part IV - データの抽出 へ戻る
SQL は、値のグループから 1 つの値を算出する、集計関数を提供しています。 値のグループとは、指定された行セットの特定の列における全データを指します。集計関数は、SELECT
句において、または、値を指定する SELECT
文のいずれかの場所で、使用することができます。
次のテーブルは、InterBase でサポートされている集計関数の一覧です:
関数 | 機能 |
---|---|
AVG(value)
|
値のグループの平均値を返す |
|
値のグループの値の数をカウントする |
|
値のグループの最小値を返す |
|
値のグループの合計数値を返す |
集計関数を使用する
- 次の文を入力して、異なるジョブ コードが、
Job
テーブルにいくつあるか検索します:SELECT COUNT(job_code) FROM Job
- しかし、このクエリでは重複したジョブ コードもカウントに含んでいるので、想定していたものとは異なります。 一意のジョブ コードのみを数えるには、次のように DISTINCT キーワードを使用します:
SELECT COUNT(DISTINCT job_code) FROM Job
14 個のジョブ コードがあるのが分かります。
- 次を入力し、
Department
テーブルから部署の平均予算を抽出します:SELECT AVG(budget) FROM Department
結果は
648095.23
です。 - 1 つの
SELECT
で、複数の集計関数を抽出することができます。 次の文を入力し、社員数、もっとも早い雇用日、すべての社員に払われた給与の合計を抽出してみましょう:SELECT COUNT(emp_no), MIN(hire_date), SUM(salary) FROM Employee
集計関数と NULL 値
集計計算にかかわる値が NULL
か不明だった場合、関数は、誤った結果とならないよう、その行全体を無視します。 たとえば、50 行以上の平均を計算する際、10 行に NULL
値が含まれていたならば、平均の計算は 40 行に対して(50 行ではなく)行われます。
集計関数 が NULL
行を無視することを確認するには、次のテストを実行してみてください:
Department
テーブルのすべての行を抽出します:SELECT dept_no, mngr_no FROM Department
21 行あり、そのうち 2 行は
mngr_no
列にNULL
値があります。- さあ、
mngr_no
列で行をカウントしてみましょう:SELECT COUNT(mngr_no) FROM Department
結果は 17。21 ではありません。
COUNT
は、NULL
値の行をカウントしません。