SQL 5章 データの参照
- 5.1. SELECT によるデータの参照
- 5.2. 条件付き参照
- 1. 不等式を使った述語
- 2. ブール演算子を使った述語
- 5.3. 特殊演算子
- 1. IN 演算子
- 2. BETWEEN 演算子
- 3. LIKE 演算子
- 4. IS NULL 演算子
- 5.4. 集約関数
- 5.5. グループ化
- 1. GROUP BY 句
- 2. HAVING 句
- 5.6. 並べ替えと名前付け
5.4. 集約関数
集約関数とは、1つの列グループに対して施すことのできる演算機能をいいます。集約関数は列グループ全体につき 1つの値を生成します。集約関数には次の 5つがあります。
- SUM( )
- 指定条件によって得られた列の値の合計を求める関数
- AVG( )
- 指定条件によって得られた列の値の平均値を求める関数
- MAX( )
- 指定条件によって得られた列の値の中で最大値を返す関数
- MIN( )
- 指定条件によって得られた列の値の中で最小値を返す関数
- COUNT( )
- 指定条件によって得られた表の基数、すなわち行数を求める関数
以下に集約関数を用いた例を示します。
受注表から、SUM( ) を用いて受注個数の合計値を求めます。
-- sample.14-1 --/* 合計の算出 */ SELECT SUM(受注個数) FROM 受注表 ;
/* 実行結果 */ SUM(受注個数) ─────── 220
受注表から、AVG( ) を用いて受注個数の平均値を求めます。
-- sample.14-2 --/* 平均値の算出 */ SELECT AVG(受注個数) FROM 受注表 ;
/* 実行結果 */ AVG(受注個数) ─────── 18.33333
受注表から、MAX( ) を用いて受注個数の最大値を求めます。
-- sample.14-3 --/* 最大値の算出 */ SELECT MAX(受注個数) FROM 受注表 ;
/* 実行結果 */ MAX(受注個数) ─────── 30
受注表から、MIN( ) を用いて受注個数の最小値を求めます。
-- sample.14-4 --/* 最小値の算出 */ SELECT MIN(受注個数) FROM 受注表 ;
/* 実行結果 */ MIN(受注個数) ─────── 10
COUNT( ) を用いて、受注表の行数を求めます。
-- sample.14-5 --/* 行数の算出 */ SELECT COUNT(*) FROM 受注表 ;
/* 実行結果 */ COUNT(*) ──── 12
受注表から、COUNT( ) を用いて顧客コードの種類の数を求めます。COUNT(DISTINCT 列名 ) とすることで、指定列の NULL 値以外を持つ値で、しかも異なる値を持つ行数を返します。
-- sample.14-6 --/* 行数の算出 */ SELECT COUNT(DISTINCT 顧客コード) FROM 受注表 ;
/* 実行結果 */ COUNT(DISTINCT 顧客コード) ──────────── 3
受注表から、顧客コードが 001 の行数、その受注個数の合計、平均値、最大値及び最小値を表示させるには次のように記述します。
-- sample.14-7 --/* 集約関数による出力 */ SELECT COUNT(*) , SUM(受注個数) , AVG(受注個数) , MAX(受注個数) , MIN(受注個数) FROM 受注表 WHERE 顧客コード = '001' ;
/* 実行結果 */ COUNT(*) SUM AVG MAX MIN ──────── ─── ──────── ─── ─── 6 115 19.16666 30 10
/* 確認 */ SELECT * FROM 受注表 WHERE 顧客コード = '001' ;
/* 確認:実行結果 */ 受注番号 顧客コード 商品コード 受注個数 納品日 ─────── ───────── ──────── ─────── ────── 10001 001 102 30 20010401 10003 001 103 10 20010402 10004 001 103 15 20010402 10006 001 101 15 20010404 10009 001 102 20 20010406 10011 001 102 25 20010407
関連記事
- [SQL] 2. SQL 6 : テーブルのデータを取り出すSQLを簡単に説明します
- [SQL] 5. データの参照 1 : テーブルのデータを取り出すSQLを詳しく説明します
- [SQL] 5. データの参照 2 : 不等式で条件を付けてデータを操作するSQLについて説明します