データベーステーブルで最小値を取得する際に非常に便利な関数として、MIN関数があります。
この関数の良いところは、シンプルな1行のSQL文を記述するだけで任意の項目の最小値を取得出来てしまうという点です。
今回の記事ではこのMIN関数について解説していきますが、初心者の方でも数分でマスターすることが出来るほど簡単な関数となっているので、是非最後までお付き合いください。
MIN関数とは
MIN関数は最小値を求める際に使用する関数です。
MIN関数を使用する最大のメリットは何と言ってもSQL文の簡素化につきます。
MIN関数を使用しない場合、WHERE句やORDER句を駆使しながら色々な条件を指定する必要がありますが、MIN関数を使用すればカラム内にある数値だけに的を絞ることが出来ます。
もしカラム内にNull値が存在した場合、MIN関数はこれを除外してくれます。
MIN関数の使い方
MIN関数の使い方について解説していきたいと思います。
MIN関数の記述は至って単純な構造となっています。
記述方法は次の通りです。
MIN([項目名]) FROM [テーブル名];
では早速MIN関数を使った実際のコードを見てみましょう。
次のコードは、テーブル内に登録された5つのレコードから、numberカラムに登録された値が最小値となるレコードのみを取得するサンプルコードとなっています。
INSERT INTO sample_table(id, number) VALUES(1, 20) INSERT INTO sample_table(id, number) VALUES(2, 10) INSERT INTO sample_table(id, number) VALUES(3, null) INSERT INTO sample_table(id, number) VALUES(4, 40) INSERT INTO sample_table(id, number) VALUES(5, null) SELECT MIN(number) AS MIN_Number FROM sample_table MIN_Number ----------- 10
MIN関数を使用することで非常にスッキリとしたSQL文だけで取得できていることが確認できます。
それでは次に、MIN関数を使用しないケースで同じ結果が期待できるコードを記述してみます。
MIN関数を使用しない場合にはORDER句を使用する必要があります。
ASCで昇順に並べ替えた後にTOPを使用し、検索されたレコードから最初の1行のみ取得します。
INSERT INTO sample_table(id, number) VALUES(1, 20) INSERT INTO sample_table(id, number) VALUES(2, 10) INSERT INTO sample_table(id, number) VALUES(3, null) INSERT INTO sample_table(id, number) VALUES(4, 40) INSERT INTO sample_table(id, number) VALUES(5, null) SELECT TOP 1 number FROM sample_table ORDER BY number ASC MIN_Number ----------- NULL
しかし結果を見るとレコードの中にNull値が存在するため、期待通りの結果が得られていないことが確認できました。
ORDER句はあくまで並べ変えのみのクエリとなるため、このような結果になったといえます。
全く同じ結果を出すためにはこのNull値をは排除する必要もあるため、次のようなコードとなってしまいます。
INSERT INTO sample_table(id, number) VALUES(1, 20) INSERT INTO sample_table(id, number) VALUES(2, 10) INSERT INTO sample_table(id, number) VALUES(3, null) INSERT INTO sample_table(id, number) VALUES(4, 40) INSERT INTO sample_table(id, number) VALUES(5, null) SELECT TOP 1 number FROM sample_table WHERE number IS NOT NULL ORDER BY number ASC MIN_Number ----------- 10
WHERE句でNull値を排除したうえでORDER句を使用することで、期待通りの結果が得られました。
このように、MIN関数を使用しない場合にはMIN関数を使用した場合と比較すると冗長なコードとなってしまいます。
まとめ
いかがでしたか?
今回は最小値を取得するための関数「MIN」について解説してみました。
コードが冗長になると、人的ミスも増えてくるため、出来るだけコードは簡潔にまとめるようにしてください。
また、最小値を求めるMIN関数ですが、逆に最大値を求める場合には同じ使い方でMAX関数というものがあります。
数値の最小値/最大値を求めるにはこれらの関数を使用するのが最も効率的ですので、この記事を見ながら忘れないようにしっかりと覚えておきましょう。