MySQLで最大値(MAX)を取得する方法!サンプル5つ!

MySQL MySQL

MySQLで最大値(MAX)を取得する方法について書いています。
最大値を取得するときにはMAX関数を使うと良いです。

載せているSQLはMySQLのバージョン8.0.31で確認しました。
公式ドキュメントではこちらに記載がありました。

MAX関数で最大値を取得する

MAX関数を使うことで、テーブルのカラムの最大値を取得することができます。
SELECT文で確認したいテーブルをFROMに指定して、MAX関数に最大値を取得したいカラムを指定します。

例えば、下記のように使います。

SELECT MAX(price) FROM fruits;

こうすると、fruitsテーブルの価格(price)カラムの最大値が返ってきます。

カラムの値が全てNULLのとき

最大値を取得したいカラムが全てNULLの場合には、NULLが返ってきます。

最大値を取得してみるサンプルSQL5選

実際に最大値を取得するSQLを実行して試していきます。

テストデータ

今回使用するテーブルは下記になります。

CREATE TABLE fruits (
  id BIGINT NOT NULL AUTO_INCREMENT,
  name VARCHAR(256),
  color VARCHAR(256),
  price INT,
  created_at DATETIME,
  PRIMARY KEY (id)
);

データは下記のように入っている状態です。

id name color price created_at
1 apple red 100 2023-01-01 00:00:00
2 grape blue 120 2023-02-01 00:00:00
3 orange orange 130 2023-03-01 00:00:00
4 banana yellow 110 2023-02-11 00:00:00
5 peach pink 125 2023-01-12 00:00:00
6 lemon yellow 120 2023-03-20 00:00:00

カラムが数値のとき

カラムが数値のpriceに対して、MAX関数を使って最大値を取得してみます。

SELECT MAX(price) FROM fruits;

実行すると、下記のようにpriceカラムの最大値の「130」が取得できました。

mysql> SELECT MAX(price) FROM fruits;
+------------+
| MAX(price) |
+------------+
|        130 |
+------------+
1 row in set (0.00 sec)

カラムが日付のときにはどうなる?

日付のcreated_atカラムに対して、MAX関数を使ってみます。

SELECT MAX(created_at) FROM fruits;

実行すると、下記のように、日付として一番新しい最新の日付が取得できました。

mysql> SELECT MAX(created_at) FROM fruits;
+---------------------+
| MAX(created_at)     |
+---------------------+
| 2023-03-20 00:00:00 |
+---------------------+
1 row in set (0.00 sec)

カラムが文字列のときにはどうなる?

文字列(アルファベット)のカラムに対して、MAX関数を使ってみました。

SELECT MAX(name) FROM fruits;

下記のように、先頭文字がアルファベット順で最後の方の「peach」が取得できました。

mysql> SELECT MAX(name) FROM fruits;
+-----------+
| MAX(name) |
+-----------+
| peach     |
+-----------+
1 row in set (0.00 sec)

WHEREと一緒に使う

WHEREを使って、検索結果を絞った内容に対して、MAX関数を使うことができます。
例えば、下記のように使うことができます。

SELECT MAX(price) FROM fruits WHERE id in (4, 5, 6);

fruitsテーブルの最大の価格(price)は「130」でした。

WHEREで対象を絞ることによって、その結果から最大値を取得できます。
今回はWHEREでidカラムが「4・5・6」の内容に絞っています。

そのため、下記のようにidが4〜6のデータで一番価格の高い「125」が取得できました。

mysql> SELECT MAX(price) FROM fruits WHERE id in (4, 5, 6);
+------------+
| MAX(price) |
+------------+
|        125 |
+------------+
1 row in set (0.00 sec)

MySQLで最大値を取得する方法まとめ

今回はMySQLで最大値を取得するMAX関数について書きました。
記事の内容をまとめると、下記のようになります。

・MAX関数をカラムに対して使うことで、カラムの最大値を取得できる。
・MAX関数はカラムにデータがない場合にはNULLを返す。
・日付を指定した時には、最新の日付が返ってくる。
・文字列を指定した時には、降順に並べて最初のものが返ってきた。
・WHEREと一緒に使うことで、指定した範囲での最大値が取得できた。

コメント

タイトルとURLをコピーしました