【SQL基礎】GROUP BY句の基本構文
GROUP BY句の基本構文
本項では、取り出したデータをグループ化する方法について紹介していきます。
取り出したデータのグループ化
グループ化とは、「1つのテーブル内にあるレコードを複数のグループごとに分割すること」です。以前から使用しているteachersテーブルは先生の情報になりますが、住所や年齢など様々な情報があります。グループ化では様々な属性の中からグループとしてまとめるための基準を設定します。例えば下図のように「埼玉県に属するグループでまとめる」というように、同じ基準に該当するものをグループとしてまとめることができます。
取り出したデータをグループ化するためにはGROUP BY句を使用します。
GROUP BY句はグループ化を行うために使用される命令と認識しておけば良いと思います。
GROUP BY句の基本構文
GROUP BY句の基本構文は以下の通りです。
SELECT 取得したいカラム名
FROM 対象とするテーブル名
(WHERE 取得したいコードの条件)
GROUP BY グループ化したいカラム名
GROUP BY句にはどのカラムの値を基準にグループ化を行うか、そのカラム名を指定します。
GROUP BY句でグループ化を行う
それでは実際にaddressを基準にグループ化を行い、addressごとの数を算出してみましょう。今回は例として以下のテーブルを使用します。
SELECT * FROM teachers ;
GROUP BY句の基本構文を使ってaddressを基にグループ化すると以下のようになります。
SELECT address FROM teachers GROUP BY address ;
このようにGROUP BY句で指定したカラムを基準にデータをグループ化することができます。また、グループ化を行うGROUP BYと集約関数とはで学習した関数を組み合わせることもできます。
SELECT address ,COUNT (address) FROM teachers GROUP BY address ;
上記SQL文では、addressを基にデータをグループ化し、さらにCOUNT関数を使ってそれぞれのaddressに該当するデータの数を算出しました。
カラムの複数指定
GROUP BY句では、複数のカラムを指定してグループ化することもできます。
複数のカラムをグループ化したい場合は、そのカラム名をGROUP BY句で指定します。
SELECT address , age FROM teachers GROUP BY address ,age ;
SELECT句で指定するカラム名がGROUP BY句と異なっていると、
意図したグループ化ができないので気を付けてください。
SELECT句の指定の注意点
GROUP BY句を使用する場合、SELECT句で指定できる要素は下記に限られますので注意が必要です。
・GROUP BY句で指定したカラム名
・集約関数
例えば、先ほどのteachersテーブルを使ったSELECT文の場合、SELECT句の中で指定できるカラム名は、GROUP BY句で指定した「address」のみとなります。
また、カラム名以外では集約関数であるCOUNTを使用しています。
今回の学習ポイント
・テーブル内にあるレコードをグループごとに分ける場合はGROUP BY句を使用する。
・GROUP BY句でグループ化した情報を表示する指定にしなければエラーになる。
練習問題
問題として使用するデータは「SQL練習問題」のものを使用しています。
以下からダウンロード可能です。
以下のようにしてworldcup2014データベースを作成し、インポートしてください。
※worldcup2014.zip解凍してできるworldcup2014.sqlファイルをCドライブ直下に配置した場合。
[sql]CREATE DATABASE worldcup2014;
USE worldcup2014;
Source C</span>/worldcup2014.sql
[/sql]
- 各クラブに在籍している選手の数を表示する。
以上、GROUP BY句の基本構文についてでした。