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

MySQLで最大・最小の給与行を選択するクエリの書き方

MySQLで最大・最小の給与行を取得する方法

テーブルから給与が最も高い行と最も低い行を同時に取得したい場合は、サブクエリMIN()関数・MAX()関数を組み合わせます。さらに、最大値と最小値の両方を一度に扱うためにUNION ALLを使用します。ここでは、テーブル作成から結果確認までの手順をサンプルコードとともに解説します。

1. サンプルテーブルの作成

まず、従業員名と給与を格納するテーブルを作成しましょう。

mysql> create table DemoTable
    -> (
    -> EmployeeName varchar(20),
    -> EmployeeSalary int
    -> );
Query OK, 0 rows affected (0.70 sec)

2. レコードの挿入

INSERTコマンドを使って、テーブルにデータを追加します。

mysql> insert into DemoTable values('Bob',8800);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('Chris',9800);
Query OK, 1 row affected (0.63 sec)
mysql> insert into DemoTable values('David',7600);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('Sam',9600);
Query OK, 1 row affected (0.14 sec)

3. テーブルの内容を確認

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

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

+--------------+----------------+
| EmployeeName | EmployeeSalary |
+--------------+----------------+
|         Bob |          8800 |
|        Chris |          9800 |
|        David |          7600 |
|          Sam |          9600 |
+--------------+----------------+
4 rows in set (0.00 sec)

4. 最大・最小の給与行を取得するクエリ

以下のクエリでは、サブクエリ内でMAX()とMIN()の結果をUNION ALLで結合し、その給与に一致する行をメインクエリで抽出しています。

mysql> select *from DemoTable
    -> where EmployeeSalary in ( select max(EmployeeSalary) from DemoTable
    -> union all
    -> select min(EmployeeSalary) from DemoTable
    -> );

実行すると、給与が最大の行と最小の行が両方表示されます。

+--------------+----------------+
| EmployeeName | EmployeeSalary |
+--------------+----------------+
|        Chris |          9800 |
|        David |          7600 |
+--------------+----------------+
2 rows in set (0.05 sec)

クエリのポイント

このクエリを理解するうえで押さえておきたいポイントは以下の3つです。

  • MAX() / MIN():それぞれ最大値・最小値を1行で返す集計関数です。
  • UNION ALL:MAX()の結果とMIN()の結果を縦に結合し、2つの値を1つのサブクエリ結果として扱えるようにします。
  • IN句:メインクエリ側では、給与がサブクエリの結果(最大値または最小値)に一致する行をすべて取得します。

なお、最大値や最小値が複数の行に存在する場合でも、IN句を使うことで該当するすべての行を漏れなく取得できる点がこの方法のメリットです。ORDER BYやLIMITを使う方法と違い、同着のデータも正しく扱えます。

  1. MySQLで最高額の給与を取得する方法

    ```html MySQLで最高額の給与を取得するには? テーブルの中から最も高い給与(最高額の給料)を取得したい場合は、集計関数の MAX() を使用します。MAX() 関数は、指定したカラムの中で最大の値を返してくれる便利な関数です。 基本構文 select MAX(yourColumnName) AS anyAliasName from yourTableName; サンプルテーブルの作成 まず、実際に動作を確認するためのテーブルを作成しましょう。 mysql> create table demo44 -> ( -> employee_id int not null

  2. 【MySQL】MIN関数とMAX関数で最小値・最大値を取得する方法

    MySQLで特定の列の最大値を取得するには MAX() 関数を、最小値を取得するには MIN() 関数を使用します。これらは最も基本的な集計関数の一つで、数値はもちろん、日付や文字列の大小比較にも利用できます。基本構文特定の列の最高値と最低値を求め、その値に該当するレコードを取得する場合の基本的な構文は以下の通りです。mysql> SELECT @min_val:=MIN(columnName),@max_val:=MAX(columnName) FROM tableName; mysql> SELECT * FROM tableName WHERE columnName=@min