MySQLでMAX・MINの値を行ID付きで取得する方法
MySQLでは、集計関数 MAX() と MIN() を使うことで、最大値・最小値を簡単に取得できます。さらに、サブクエリを組み合わせれば、その値が含まれる行ID(Id)も一緒に取り出すことが可能です。
サンプルテーブルの作成
まず、動作確認用のテーブルを作成しましょう。
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Number1 int,
Number2 int
);
Query OK, 0 rows affected (0.89 sec)このテーブルは、自動採番される主キー「Id」と、2つの整数カラム「Number1」「Number2」で構成されています。
レコードの挿入
次に、INSERT文を使ってテーブルにデータを挿入します。
mysql> insert into DemoTable(Number1,Number2) values(67,45); Query OK, 1 row affected (0.18 sec) mysql> insert into DemoTable(Number1,Number2) values(90,40); Query OK, 1 row affected (0.18 sec) mysql> insert into DemoTable(Number1,Number2) values(80,43); Query OK, 1 row affected (0.48 sec)
テーブル内の全レコードを確認する
SELECT文で、テーブルの内容を確認してみましょう。
mysql> select *from DemoTable;
実行すると、以下のような結果が表示されます。
+----+---------+---------+ | Id | Number1 | Number2 | +----+---------+---------+ | 1 | 67 | 45 | | 2 | 90 | 40 | | 3 | 80 | 43 | +----+---------+---------+ 3 rows in set (0.00 sec)
MAX・MINの値を行IDとともに取得するクエリ
ここからが本題です。「Number1 の最大値」または「Number2 の最小値」が含まれる行を、その行IDごと抽出したい場合は、WHERE句の中でサブクエリを使います。
mysql> select * from DemoTable where Number1 = (select max(Number1) from DemoTable) or Number2 = (select min(Number2) from DemoTable);
このクエリのポイントは以下の通りです。
(select max(Number1) from DemoTable)で Number1 列の最大値(90)を取得します。(select min(Number2) from DemoTable)で Number2 列の最小値(40)を取得します。- WHERE句でどちらかの条件に一致する行を返すため、該当する行IDも一緒に表示されます。
実行結果は以下のようになります。
+----+---------+---------+ | Id | Number1 | Number2 | +----+---------+---------+ | 2 | 90 | 40 | +----+---------+---------+ 1 row in set (0.00 sec)
この例では、Id=2 の行が Number1 の最大値「90」と Number2 の最小値「40」の両方を持っているため、1行だけが抽出されました。もし最大値と最小値が別々の行にある場合は、それぞれ該当する複数の行が結果として返されます。
まとめ
MAX()やMIN()を単独で使うと数値しか得られませんが、サブクエリと組み合わせてWHERE句の条件にすることで、「どの行がその値を持つのか」を行ID付きで特定できます。大量のデータから極値のレコードを探す際に非常に便利なテクニックなので、ぜひ活用してみてください。
-
MySQLで最大・最小の給与行を選択するクエリの書き方
MySQLで最大・最小の給与行を取得する方法テーブルから給与が最も高い行と最も低い行を同時に取得したい場合は、サブクエリとMIN()関数・MAX()関数を組み合わせます。さらに、最大値と最小値の両方を一度に扱うためにUNION ALLを使用します。ここでは、テーブル作成から結果確認までの手順をサンプルコードとともに解説します。1. サンプルテーブルの作成まず、従業員名と給与を格納するテーブルを作成しましょう。mysql> create table DemoTable -> ( -> E
-
Pythonのmax()とmin()関数:数値・文字列の最大値と最小値を求める方法
データ処理プログラムでは、リスト内の値から最大値や最小値を求めたい場面が非常によくあります。Pythonには、こうした処理を行うための組み込み関数として max() と min() が用意されており、数値だけでなく文字列にも対応しています。ここでは、それぞれの使い方を具体例とともに解説します。数値のリストから最大値・最小値を取得するまず、整数と浮動小数点数が混在した数値のリストを用意します。max() と min() は、データ型が混在していても適切に比較を行い、最大値と最小値を正しく返します。サンプルコードx=[10,15,25.5,3,2,9/5,40,70] print(Maximum