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