MySQLのGROUP BYを使って特定の会社に所属する従業員名を取得する方法
MySQLでは、GROUP BY句とWHERE句を組み合わせることで、特定の会社に所属する従業員名を効率的に抽出できます。この記事では、サンプルテーブルを作成し、実際にクエリを実行しながら手順を解説します。
1. サンプルテーブルの作成
まず、従業員情報を格納するためのテーブルを作成しましょう。
mysql> create table DemoTable642(
EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
EmployeeName varchar(100),
EmployeeCompanyName varchar(100)
);
Query OK, 0 rows affected (0.81 sec)
このテーブルは、従業員ID(自動採番の主キー)、従業員名、勤務先の会社名の3つのカラムを持っています。
2. テストデータの挿入
INSERT文を使って、複数の従業員レコードを登録します。同じ従業員が複数の会社に所属しているケースも想定しています。
mysql> insert into DemoTable642(EmployeeName,EmployeeCompanyName) values('John','Google');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable642(EmployeeName,EmployeeCompanyName) values('Carol','Microsoft');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable642(EmployeeName,EmployeeCompanyName) values('John','Amazon');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable642(EmployeeName,EmployeeCompanyName) values('Carol','Google');
Query OK, 1 row affected (0.37 sec)
mysql> insert into DemoTable642(EmployeeName,EmployeeCompanyName) values('John','Flipkart');
Query OK, 1 row affected (0.14 sec)
3. 登録されたレコードの確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable642;
実行結果は以下の通りです。
+------------+--------------+---------------------+ | EmployeeId | EmployeeName | EmployeeCompanyName | +------------+--------------+---------------------+ | 1 | John | Google | | 2 | Carol | Microsoft | | 3 | John | Amazon | | 4 | Carol | Google | | 5 | John | Flipkart | +------------+--------------+---------------------+ 5 rows in set (0.00 sec)
4. 特定の会社の従業員名を取得するクエリ
ここが本題です。「Google」に所属する従業員名を取得するには、WHERE句で会社名を絞り込み、GROUP BY句で従業員名をグループ化して重複を排除します。
mysql> select EmployeeName from DemoTable642
where EmployeeCompanyName="Google"
group by EmployeeName;
実行結果は以下の通りです。
+--------------+ | EmployeeName | +--------------+ | John | | Carol | +--------------+ 2 rows in set (0.00 sec)
補足:DISTINCTとの使い分け
単純に重複を排除したいだけなら、SELECT DISTINCT EmployeeName FROM DemoTable642 WHERE EmployeeCompanyName='Google'; のようにDISTINCTを使う方法もあります。GROUP BYは、従業員ごとの件数を数える(COUNT(*)など)集計処理と組み合わせたい場合に特に有効です。用途に応じて使い分けるとよいでしょう。
-
MySQLでテーブルから特定の行を抽出するクエリの書き方
MySQLでは、WHERE句とORDER BY、LIMITを組み合わせることで、テーブルから条件に合致する特定の行だけを効率的に取得できます。本記事では、実際にサンプルテーブルを作成し、特定の行を抽出するクエリの実行手順をわかりやすく解説します。 1. サンプルテーブルの作成 まず、CREATE TABLE文を使ってサンプル用のテーブルを作成します。ここでは「Section(組)」と「StudentName(生徒名)」という2つのカラムを持つテーブルを用意しました。 mysql> create table DemoTable1972 ( Section char(1),
-
MySQLで別テーブルのIDからユーザー名を取得する方法|JOINの使い方を徹底解説
MySQLでは、別々のテーブルに保存されたデータをIDをキーに関連付けて取得したい場面が多くあります。そのような場合にはJOIN(内部結合)を使うことで、複数のテーブルを結合し、目的のユーザー名を簡単に取り出すことができます。 本記事では、実際にサンプルテーブルを作成しながら、JOINクエリの書き方をステップごとに解説します。 1つ目のテーブル「demo77」を作成する まず、ユーザーID(userid)とユーザー名(username)を格納するテーブルを作成します。useridは主キーとして設定します。 mysql> create table demo77 -> (