引数で最大の値を求める、引数で最小の値を求める
または、複数のカラム間において最大のカラムの値を求める、最小のカラムの値を求める。
GREATEST ( expr_list )
LEAST ( expr_list )
return [ 第一引数のデータ型 ]
expr_list | カンマで区切った式のリスト(1つ以上の値リスト) |
- 式のリストにおいて最大の値、または、最小の値をもつものを戻す。
GREATEST 関数の内容
式のリスト [ expr , expr2 ... , exprN ] の中で 「最大の値」 を戻す。
MAX 関数は単一列、複数行に渡っての最大を求めるものであるが GREATEST は 複数列、単一行の最大値を求める。
LEAST 関数の内容
GREATEST 同様に 式のリスト [ expr , expr2 ... , exprN ] の中で「最小の値」を戻す。
MIN 関数は単一列、複数行に渡っての最小を求めるものであるが LEAST は 複数列、単一行の最小値を求める。
注意
GREATEST および LEAST 関数は MIN 集計関数 や MAX 集計関数 のように NULL を除外しないためリストの要素中に1つでも NULL が含まれると結果は NULL となる。
また 引数は DECODE 関数などと同様に 最大で 255 個までとなる。
GREATEST 使用例
数値の最大を求める場合
SQL> select GREATEST(1,10,3,5,5,1,6) from dual;
GREATEST(1,10,3,5,5,1,6)
------------------------
10
文字列の最大を求める場合
SQL> select GREATEST('AAA','AAa','Aaa','aaa') from dual;
GREATE
------
aaa
('aaa'>'Aaa'>'AAa'>'AAA')
アルファベット順では 大文字<小文字 並びとなる。(NLS_LANGUAGE で変わる)
リストに NULL を含む場合
SQL> set null '<NULL>'
SQL> select greatest(1, null, 123), least(100, 9999, null) from dual;
GREATEST(1,NULL,123) LEAST(100,9999,NULL)
-------------------- --------------------
<NULL> <NULL>
- 複数列(greatest スカラー関数) 、複数行(max グループ関数) の最大値を求める
select MAX(GREATEST(col1, col2, col3, ...)) from tablename
LEAST 使用例
数値の最小を求める場合
SQL> select LEAST(1,2,3,5,4,7,6) from dual;
LEAST(1,2,3,5,4,7,6)
--------------------
1
文字列の最小を求める場合
SQL> select LEAST('AAA','aaa','abc','ABC') from dual;
LEAST
------
AAA
('AAA'<'aaa'<'ABC'<'abc')
select MIN(LEAST(col1, col2, col3, ...)) from tablename
SQL 関数 - GREATEST,LEAST 関連