0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NULLが混じっても無視してそれ以外の最大・最小を求めるGREATEST, LEAST

Posted at

SQL非標準の関数でGREATEST(), LEAST()という関数があります。複数の引数を取ってそれらの中の最大値・最小値を返すものです。

ところがこれらの関数に微妙な使いづらさを感じている方も多いことと思います。引数にNULLが含まれていた場合ですね。その場合、結果は必ずNULLになってしまいます(PostgreSQLだけは違いますが)。

NULLが引数列に混じっていても無視してそれ以外の値の中でだけ最大値・最小値を求めたい場合の書き方についてです。

BigQueryなら

-- これだとNULLが混じっていたら結果もNULL
GREATEST(a, b, c, d, e)

-- こうすると、NULLは無視したそれ以外の最大値が出る
(SELECT MAX(x) FROM UNNEST([a, b, c, d, e]) x)

Athenaなら

(SELECT MAX(x) FROM UNNEST(ARRAY[a, b, c, d, e]) t(x))
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?