Dreamweaver TechniqueJAVA Script サンプル | CSS sample | JAVA Applet sample | Flash Sample
HTML4.0 reference | DynamicHTMLXHTML | XML sample | XSLT sample | RIKO's ASP Trial
ASP ADO リファレンス | PHP関数リファレンス | MySQL関数リファレンス

SQL:グループ化(GROUP BY)

■ グループ化:GROUP BY

特定の列内で同じデータを持つレコード同士をグループ化し、それぞれのグループで集計を行うことができます。結果レコードに含めることのできる列は、グループ化の基準列(グループ列)と集計関数の結果だけです。グループ列以外の列を取得するとエラーになります。

書式は以下のようになります

SELECT [グループ列名], [集計関数], ... FROM [TABLE名] GROUP BY [グループ列名], ... ;

SELECT 課, AVG(基本給) FROM 社員 GROUP BY 課 ; -- 課ごとの基本給の平均を求める
SELECT 組, AVG(数学), MAX(数学) FROM 生徒 GROUP BY 組 ; -- 組ごとの数学の平均と最高点を求める

■ グループの条件設定:HAVING

グループ化する場合は、WHEREで条件を設定することはできません。WHEREキーワードは、1つ1つのレコードについての条件を設定する機能だからです。グループ化した場合に条件を設定するには、HAVINGキーワードを使います。条件式に使用できる列は、グループ化の基準列(グループ列)と集計関数の結果だけです。グループ列以外の列を条件式で使うとエラーになります。

書式は以下のようになります。

SELECT [グループ列名], [集計関数], ... FROM [テーブル名] GROUP BY [グループ列名] HAVING [条件式]

SELECT 課, AVG(基本給) FROM 社員 GROUP BY 課 HAVING 課 IN (庶務, 秘書, 経理) ; -- 経理、庶務、秘書の各課の基本給の平均を求める
SELECT MAX(価格), MIN(価格) FROM 商品 GROUP BY カテゴリ HAVING AVG(価格) >= 800 ; -- 平均価格が800以上のカテゴリの中で、最高価格と最低価格を求める

<< 戻る
R HOUSE | RIKO's Trial Page | Shirley's Pettit Case | Shirley's i-box | Shirley's little box