web-dev-qa-db-ja.com

Postgresの2つのフィールドのMIN()を取得するにはどうすればよいですか?

このようなテーブルがあるとしましょう:

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でこれを試すと、「指定された名前と引数の型に一致する関数はありません。明示的な型キャストを追加する必要がある場合があります。」 MAX()およびMIN()はではなくで機能するように見えます

私がしようとしていることを行うことは可能ですか?

114
mike

[〜#〜] least [〜#〜] (a、b):

GREATESTおよびLEAST関数は、任意の数の式のリストから最大値または最小値を選択します。式はすべて、結果の型となる共通のデータ型に変換可能である必要があります(詳細については、 セクション10.5 を参照してください)。リスト内のNULL値は無視されます。すべての式がNULLと評価された場合にのみ、結果はNULLになります。

GREATESTLEASTはSQL標準にはありませんが、一般的な拡張子であることに注意してください。一部のデータベースでは、すべての引数がNULLの場合だけでなく、引数がNULLの場合にNULLを返します。

200
cagcowboy

PostgreSQLのLEAST()関数のドキュメントへのリンクは次のとおりです。

http://www.postgresql.org/docs/current/static/functions-conditional.html#AEN15582

23
Bill Karwin