178

次のようなテーブルがあるとします。

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()は、列ではなく行全体で機能するようです。

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

4

3 に答える 3

328

最小(a、b):

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

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

于 2008-11-25T21:46:15.220 に答える
32

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

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

于 2008-11-25T22:17:53.190 に答える