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

サブクエリを使ってMySQLのEmployeeテーブルから最大給与と2番目に大きい給与を取得する方法

サブクエリ(副問い合わせ)を利用すると、Employeeテーブルから最大給与2番目に大きい給与を簡単に取得できます。この記事では、テーブルの作成からデータの挿入、サブクエリによる上位2つの給与の抽出まで、手順を追ってわかりやすく解説します。

1. テーブルを作成する

まず、従業員情報を格納するためのテーブルを作成します。テーブル作成用のクエリは以下のとおりです。

mysql> create table EmployeeMaxAndSecondMaxSalary
    -> (
    -> EmployeeId int,
    -> Employeename varchar(20),
    -> EmployeeSalary int
    -> );
Query OK, 0 rows affected (0.88 sec)

2. レコードを挿入する

次に、INSERTコマンドを使ってテーブルに複数のレコードを挿入します。

mysql> insert into EmployeeMaxAndSecondMaxSalary values(1,'John',34566);
Query OK, 1 row affected (0.20 sec)

mysql> insert into EmployeeMaxAndSecondMaxSalary values(2,'Bob',56789);
Query OK, 1 row affected (0.17 sec)

mysql> insert into EmployeeMaxAndSecondMaxSalary values(3,'Carol',44560);
Query OK, 1 row affected (0.26 sec)

mysql> insert into EmployeeMaxAndSecondMaxSalary values(4,'Sam',76456);
Query OK, 1 row affected (0.29 sec)

mysql> insert into EmployeeMaxAndSecondMaxSalary values(5,'Mike',65566);
Query OK, 1 row affected (0.14 sec)

mysql> insert into EmployeeMaxAndSecondMaxSalary values(6,'David',89990);
Query OK, 1 row affected (0.19 sec)

mysql> insert into EmployeeMaxAndSecondMaxSalary values(7,'James',68789);
Query OK, 1 row affected (0.12 sec)

mysql> insert into EmployeeMaxAndSecondMaxSalary values(8,'Robert',76543);
Query OK, 1 row affected (0.13 sec)

3. テーブルの全レコードを確認する

SELECT文を使って、テーブル内のすべてのレコードを表示して確認しましょう。

mysql> select *from EmployeeMaxAndSecondMaxSalary;

実行結果は以下のとおりです。

+------------+--------------+----------------+
| EmployeeId | Employeename | EmployeeSalary |
+------------+--------------+----------------+
|          1 | John         |          34566 |
|          2 | Bob          |          56789 |
|          3 | Carol        |          44560 |
|          4 | Sam          |          76456 |
|          5 | Mike         |          65566 |
|          6 | David        |          89990 |
|          7 | James        |          68789 |
|          8 | Robert       |          76543 |
+------------+--------------+----------------+
8 rows in set (0.00 sec)

4. サブクエリで最大給与と2番目に大きい給与を取得する

それでは、サブクエリを使用して最大給与と2番目に大きい給与を取得してみましょう。クエリは以下のとおりです。

mysql> select (select max(EmployeeSalary) from EmployeeMaxAndSecondMaxSalary) MaximumSalary,
    -> (select max(EmployeeSalary) from EmployeeMaxAndSecondMaxSalary
    -> where EmployeeSalary not in(select max(EmployeeSalary) from
EmployeeMaxAndSecondMaxSalary)) as SecondMaximumSalary;

クエリの仕組み:

  • 1つ目のサブクエリは、MAX()関数によってテーブル全体の中で最も高い給与を返します。
  • 2つ目のサブクエリは、NOT IN句で最大値を除外した上で再度MAX()関数を適用することにより、2番目に大きい給与を算出しています。

実行結果として、上位2つの給与が表示されます。

+---------------+---------------------+
| MaximumSalary | SecondMaximumSalary |
+---------------+---------------------+
|         89990 |               76543 |
+---------------+---------------------+
1 row in set (0.00 sec)

このように、サブクエリとMAX()関数、NOT IN句を組み合わせることで、最大値だけでなく2番目に大きい値もシンプルなクエリで柔軟に取得できます。

  1. MySQLのINSERT INTO SELECT文で別のテーブルの値を挿入する方法

    あるテーブルの値を基に別のテーブルへデータを挿入したい場合は、INSERT INTO SELECT文を使用します。この構文では、SELECT文で抽出した結果セットをそのまま対象テーブルへ流し込めるため、テーブル間のデータ移行やコピーにもっとも効率的な方法の一つです。 以下の手順で、実際の動作を順番に確認していきましょう。 手順1:元となるテーブルを作成する まず、データのコピー元となるテーブル「demo82」を作成します。 mysql> create table demo82     -> (     

  2. MySQLデータベースの作成と使い方を徹底解説!初心者向け基本ステップ

    MySQLデータベース操作の基本ステップMySQLのインストールが完了し、SQL文の入力方法を理解したら、いよいよデータベースへアクセスできるようになります。ここでは、データベース内のテーブルからデータを取得するまでの一連の手順を順番に見ていきましょう。サーバーへの接続データベースの作成テーブルの作成テーブルへのデータ投入テーブルからのデータ取得既存のデータベースを確認する新しいデータベースを作成する前に、まず環境にすでに存在するデータベースを把握しておくことが重要です。以下のクエリを実行することで、現在利用可能なデータベースの一覧を確認できます。クエリmysql> SHOW DATAB