SQLには複数レコードから最大値/最小値を求める集約関数のMAX()
, MIN()
関数がありますが、そうでなく複数指定した引数のうちの最大値/最小値を求める関数を、SQL非標準ながら複数のRDBが持っています。
それがGREATEST()
, LEAST()
関数。
しかしこの両関数に渡した引数値にひとつでもNULL
が含まれていた場合の振る舞いがPostgreSQLだけ違うので製品移行の際に注意が必要です。
RDB | NULLが含まれた場合 |
---|---|
Oracle | NULLを返す |
DB2 | |
MySQL | |
SQLite (多引数`MAX()`, `MIN()`) | |
BigQuery | |
**PostgreSQL** | **NULLを無視し残りの値の最大または最小** |
SQL Server | (非搭載) |