MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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(*)など)集計処理と組み合わせたい場合に特に有効です。用途に応じて使い分けるとよいでしょう。

  1. MySQLでテーブルから特定の行を抽出するクエリの書き方

    MySQLでは、WHERE句とORDER BY、LIMITを組み合わせることで、テーブルから条件に合致する特定の行だけを効率的に取得できます。本記事では、実際にサンプルテーブルを作成し、特定の行を抽出するクエリの実行手順をわかりやすく解説します。 1. サンプルテーブルの作成 まず、CREATE TABLE文を使ってサンプル用のテーブルを作成します。ここでは「Section(組)」と「StudentName(生徒名)」という2つのカラムを持つテーブルを用意しました。 mysql> create table DemoTable1972 ( Section char(1),

  2. MySQLで別テーブルのIDからユーザー名を取得する方法|JOINの使い方を徹底解説

    MySQLでは、別々のテーブルに保存されたデータをIDをキーに関連付けて取得したい場面が多くあります。そのような場合にはJOIN(内部結合)を使うことで、複数のテーブルを結合し、目的のユーザー名を簡単に取り出すことができます。 本記事では、実際にサンプルテーブルを作成しながら、JOINクエリの書き方をステップごとに解説します。 1つ目のテーブル「demo77」を作成する まず、ユーザーID(userid)とユーザー名(username)を格納するテーブルを作成します。useridは主キーとして設定します。 mysql> create table demo77 -> (