指定したカラムの "最小値" を取得するMIN関数の使い方を初心者向けにわかりやすく1から解説します。
MIN関数は指定したカラムのレコードの最小値を取得します。"MIN" は最小を意味する "Minimum" の略です。
上記の例では、最小値である "10" が結果として取得できます。
このページではSQLにおけるMIN関数の利用方法・構文ルールを初心者向けにご説明します。
プログラマーやシステムエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識です。是非最後までご覧ください。
SQL:MIN関数の使い方・構文ルール
SELECT MIN(カラム名) FROM テーブル名;
MIN関数はSUM関数と全く同様の構文ルールです。
"MIN( )" のように最小値を求めたいカラムを( )で囲むだけ。
ここでは以下のようなテーブルを例にMIN関数の利用方法と処理結果を見ていきます。
成績の一覧テーブルから、Japanaeseカラムのレコードの最小値を取得したい場合は以下のように記述します。
SELECT MIN(Japanaese) FROM PointList; -- Japanaeseカラムの最小値は10 /* 実行結果 +----------+ | MIN | +----------+ | 10 | */
SUM関数/AVG関数など他の集約関数同様に、複数のカラムを指定することも可能です。
SELECT MIN(Japanese), MIN(Math), MIN(English) FROM PointList; /* 実行結果 +------------------+------------------+------------------+ | MIN(Japanaese) | MIN(Math) |MIN(English) | +------------------+------------------+------------------+ | 10 | 100 |10 | */
参考までにSUM関数のサンプルコードも記載しますが、構文ルールは全く同様であることが分かります。
SELECT SUM(Japanese), SUM(Math), SUM(English) FROM PointList; /* 実行結果 +------------------+------------------+------------------+ | SUM(Japanaese) | SUM(Math) |SUM(English) | +------------------+------------------+------------------+ | 360 | 3600 |360 | */
MIN関数:NULL値の扱い
指定したカラムにNULL値が存在する場合、MIN関数はNULL値を無視します。
MIN関数は、計算の前にNULLを除外しその後で合計を計算するため結果は以下のようになります。
SELECT MIN(Japanese), MIN(Math), MIN(English) FROM PointList; /* 実行結果 +------------------+------------------+------------------+ | MIN(Japanaese) | MIN(Math) |MIN(English) | +------------------+------------------+------------------+ | 10 | 100 |10 | */
また、ほとんどこのパターンは存在しませんが、レコードがすべてNULLだった場合はNULLが返って来ます。
SELECT MIN(Japanese), MIN(Math), MIN(English) FROM PointList; /* 実行結果 +------------------+------------------+------------------+ | MIN(Japanaese) | MIN(Math) |MIN(English) | +------------------+------------------+------------------+ | NULL | NULL |NULL | */
日付の最小値を取得する
SUM関数やAVG関数では、指定したカラムが数値型でない場合はエラーが発生します。
しかしMIN関数の場合は原則どのようなデータ型のカラムに対しても適用することが可能です。例えば以下のように日付の最小値を取得することも可能です。
SELECT MIN(Birthday) FROM PointList; -- Birthdayカラムの最小値は1990/1/1 /* 実行結果 +----------+ | MIN | +----------+ | 1990/1/1 | */
MIN関数:GROUP BY句との合わせ技
MIN関数と "GROUP BY" 句を併用すると、指定したグループごとに最小値を求め結果を得ることが可能です。
先ほどのPointListテーブルに性別を示すカラムを追加して考えてみましょう。
男性の最小値は10/女性の最小値は20です。
GROUP BY句にFM列を指定して実行した結果がこちら。
SELECT FM, MIN(Japanese) FROM PointList GROUP BY FM; /* 実行結果 +----------+-----------+ | FM | MIN | +----------+-----------+ | 男 | 10 | | 女 | 20 | */
ご覧のように、指定したグループごとに結果を取得してくれます。
システムエンジニアを目指したい方は
システムエンジニアを目指す方や、IT知識を1から身につけたい方は以下のページをご覧ください。
正直どこから学び始めればよいかわからない。どのように勉強していけば、エンジニアとしてのスキルが磨けるか?が分からない・・・という方は必見です。
システムエンジニア向けに「できるエンジニア」になる方法を1から解説しておりますので、是非ご覧ください。