1. ホーム
  2. sql

[解決済み] Postgresで2つのフィールドのMIN()を取得する方法は?

2022-04-21 14:33:52

質問

例えば、こんなテーブルがあるとします。

name | score_a | score_b
-----+---------+--------
 Joe |   100   |   24
 Sam |    96   |  438
 Bob |    76   |  101
 ... |   ...   |  ...

score_aとscore_bの最小値を選択したいのですが。つまり、以下のようなものです。

SELECT name, MIN(score_a, score_b)
FROM table

結果はもちろん、そうなりますね。

name | min
-----+-----
 Joe |  24
 Sam |  96
 Bob |  76
 ... | ...

しかし、Postgresでこれを試すと、"与えられた名前と引数の型に一致する関数がありません、と表示されます。明示的な型キャストを追加する必要があるかもしれません。 ではなく の列になります。

私が試みているようなことは可能なのでしょうか?

どのように解決するのですか?

最小 (a,b)のようになります。

GREATESTLEAST は,任意の数の式からなるリストから,最大または最小の値を選択する関数である.式はすべて共通のデータ型に変換可能でなければならず,それが結果の型となる ( 第10.5項 を参照してください)。リスト中のNULL値は無視される。すべての式がNULLと評価された場合のみ、結果はNULLとなります。

なお GREATESTLEAST は標準SQLにはありませんが、一般的な拡張機能です。他のデータベースでは、引数がすべてNULLのときだけでなく、いずれかの引数がNULLのときにもNULLを返すようにしているものもあります...。