カラムの値が同じデータをグループ化するには「GROUP BY」句を使います。
ここでは MySQLコマンド「GROUP BY」の具体的な使い方を解説していきます。
目次
「GROUP BY」の基本
「GROUP BY」は、「SELECT」などと組み合わせて使います。
以下は「SELECT」文と組み合わせて使った場合の例。
これで指定したカラムの値が同じデータをグループ化できます。
SELECT カラム名 FROM テーブル名 GROUP BY カラム名;
SELECT 文の詳しい使い方はこちら。
データをグループ化する
実際にMySQLサーバーに接続し、動作を確認してみましょう。
あらかじめ「test」データベースの「users」テーブルに、以下のようにデータが保存されている例で進めていきます。
name | gender |
age |
佐藤 | man | 21 |
鈴木 | woman | 25 |
田中 | woman | 21 |
山田 | man | 32 |
吉田 | man | 32 |
データを保存するコマンド例
CREATE DATABASE test;
USE test;
CREATE TABLE users (name VARCHAR(100), gender VARCHAR(100), age INT);
INSERT INTO users (name, gender, age) VALUES ('佐藤', 'man', 21);
INSERT INTO users (name, gender, age) VALUES ('鈴木', 'woman', 25);
INSERT INTO users (name, gender, age) VALUES ('田中', 'woman', 21);
INSERT INTO users (name, gender, age) VALUES ('山田', 'man', 32);
INSERT INTO users (name, gender, age) VALUES ('吉田', 'man', 32);
CREATE DATABASE 文の詳しい使い方はこちら。
USE 文の詳しい使い方はこちら。
CREATE TABLE 文の詳しい使い方はこちら。
INSERT INTO 文の詳しい使い方はこちら。
それでは「gender」カラムの値でデータをグループ化してみましょう。コマンドは以下。
SELECT gender FROM users GROUP BY gender;
コマンドを実行すると、「gender」カラムの値が重複しているデータはグループ化され、ひとつの行で表示されました。
グループ化されているデータ数をカウントする
今度は「gender」カラムの値ごとのデータ数をカウントしてみましょう。
レコード数をカウントする COUNT関数を組み合わせます。コマンドは以下。
SELECT gender, COUNT(*) FROM users GROUP BY gender;
コマンドを実行すると、以下のように結果が表示されました。
man
のデータ数は3、woman
のデータ数は2であることがわかります。
COUNT関数の詳しい使い方はこちら。
グループごとに、指定したカラムの最大値と最小値を取得する
今度は、「gender」カラムをグループ化して、グループごとに「age」カラムの最大値と最小値を取得してみましょう。
MAX関数とMIN関数を組み合わせます。コマンドは以下。
SELECT gender, MAX(age), MIN(age) FROM users GROUP BY gender;
コマンドを実行すると、以下のように結果が表示されました。
man
の中での「age」の最大値は32で、最小値は21。
woman
の中での「age」の最大値は25で、最小値は21であることがわかります。
ほかにもSUM関数で合計値、AVG関数で平均値を出すこともできます。
複数のカラムを指定してグループ化する
カンマ(,
)で区切ることで、複数のカラムを指定してグループ化することもできます。
以下は「gender」と「age」カラムの値でグループ化する例。
SELECT gender, age FROM users GROUP BY gender, age;
コマンドを実行すると、「gender」カラムと「age」カラムの値の組み合わせが重複しているデータはグループ化され、ひとつの行で表示されました。
まとめ
以上、MySQLコマンド「GROUP BY」の使い方でした!
ここまでの内容をまとめておきます。
- 「GROUP BY」でカラムの値が同じデータをグループ化することができる。
- COUNT関数を組み合わせて、グループごとのデータ数をカウントできる。
- MAXやMIN、SUM、AVGなど、関数を組み合わせることで、グループごとの計算値を取得できる。
- 複数のカラムの値の組み合わせでグループ化することもできる。