MySQLのGROUP BYについて

はるか
sqlでグループ化ってどうするの?

ふゅか
GROUP BY句を使えば、グルーピングができるわ。
目次
1. GROUP BYとは
データベース内のデータを特定のカラム(列)の値に基づいてグループ化するために使用されます。
2. 実際にGROUPBYを動かす
2.1. テーブルの設計
まず、今回使用するテーブルを設計します。今回はキャラクターに関するテーブルを作成します。 キャラクターに関連する属性は名前、年齢、性別、種族、職業などがありあます。
2.2. テーブルの作成
まずは、テーブルを作成しましょう。
CREATE TABLE characters (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
age INT,
gender VARCHAR(10),
race VARCHAR(50),
occupation VARCHAR(50)
);
2.3. データの挿入
作成したテーブルにデータを挿入します。
INSERT INTO characters (name, age, gender, race, occupation) VALUES
('Alice', 30, 'Female', 'Human', 'Warrior'),
('Bob', 25, 'Male', 'Elf', 'Archer'),
('はるか', 19, 'Female', 'Elf', 'Mage'),
('David', 35, 'Male', 'Dwarf', 'Blacksmith'),
('ふゅか', 1500, 'Female', 'Elf', 'Priest');
2.4. グループ化の実施
2.4.1. 職業ごとにキャラクター数をカウントしたい場合
集計関数COUNTを使って、それぞれのレコード数を集計します。
SELECT occupation, COUNT(*) as number_of_characters
FROM characters
GROUP BY occupation;

はるか
職業はそれぞれのキャラクターで分かれているな。
2.4.2. 種族ごとに平均年齢を算出したい場合
集計関数であるAVGを使用してageごとの平均値を算出します。
SELECT race, AVG(age) as average_age
FROM characters
GROUP BY race;

はるか
elfの平均年齢が高いな。ん?
2.4.3. 性別ごとのキャラ数を集計したい場合
SELECT gender, COUNT(*) as number_of_characters
FROM characters
GROUP BY gender;

ふゅか
性別ごとにキャラクター数を分けれましたね♪
PR