|
データを集計(グループ化)する (COUNT, SUM, MAX, MIN, AVGなど)
SELECT文でデータを取得する際に、合計などの集計をすることができます。
集計の基準(どの列を基準に同じデータごとに集計するか)は、
GROUP BY句を利用します。
また、集計した結果を条件としたい場合は、HAVING句を利用します。
文法:SELECT [<列名1>,…]<集計関数>(<列名2>)[, <列名3>…]
FROM <テーブル名>
[WHERE 条件式]
[GROUP BY グループ列1, グループ列2…]
[HAVING 条件式]
|
なお、SELECT 列名1, SUM(列名2) FROM TABLE1 のように、集計関数を利用する列としない列の取得が混在している場合で、
GROUP BYのグループ列に集計を利用しない列名が指定されていない場合は実行できません。
正しくは、SELECT 列名1, SUM(列名2) FROM TABLE1 GROUP BY 列名1 となります。
よく利用される集計関数
例 |
意味 |
COUNT(列名1) |
列名1の件数 |
COUNT(*) |
特に列を指定しない場合の件数
*結果は上記と同様 |
SUM(列名1) |
列名1の値の合計 |
MAX(列名1) |
列名1の値の最大値 |
MIN(列名1) |
列名1の値の最小値 |
AVG(列名1) |
列名1の値の平均値 |
***例(COUNT:所属ごとの人数)***
[社員マスタ]
所属コード |
社員コード |
氏名 |
所持金 |
01 |
001 |
テスト一郎 |
1000 |
01 |
002 |
テスト二郎 |
5000 |
02 |
001 |
テスト三郎 |
700 |
02 |
002 |
テスト四郎 |
-100 |
03 |
001 |
テスト五郎 |
1200 |
[実行SQL]
SELECT
所属コード,
COUNT(所属コード) AS 人数
FROM
社員マスタ
GROUP BY
所属コード
|
[結果]
***例(SUM:所属ごとの所持金合計)***
[社員マスタ]
所属コード |
社員コード |
氏名 |
所持金 |
01 |
001 |
テスト一郎 |
1000 |
01 |
002 |
テスト二郎 |
5000 |
02 |
001 |
テスト三郎 |
700 |
02 |
002 |
テスト四郎 |
-100 |
03 |
001 |
テスト五郎 |
1200 |
[実行SQL]
SELECT
所属コード,
SUM(所持金) AS 所持金合計
FROM
社員マスタ
GROUP BY
所属コード
HAVING
SUM(所持金) < 2000
|
※'SUM(所持金)'は集計関数を利用したものなので、WHERE句として指定はできません
[結果]
所属コード |
所持金合計 |
02 |
600 |
03 |
1200 |
***例(MAX:一番多い所持金)***
[社員マスタ]
所属コード |
社員コード |
氏名 |
所持金 |
01 |
001 |
テスト一郎 |
1000 |
01 |
002 |
テスト二郎 |
5000 |
02 |
001 |
テスト三郎 |
700 |
02 |
002 |
テスト四郎 |
-100 |
03 |
001 |
テスト五郎 |
1200 |
[実行SQL]
SELECT
MAX(所持金) AS 最大所持金
FROM
社員マスタ
|
[結果]
|
<<PR>>
価格:300円
価格:300円
|