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


140

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

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

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

回答:


246

LEAST(a、b):

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

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


20
MAX()2つの値も必要とする私のような人々にとっては、GREATEST(a, b):)
vektor


-16

そのデータを次のような列に入れることで答えを得ることができます:

SELECT name, MIN(score_a, score_b) as minimum_score
FROM table

ここではscore_ascore_bとの間に最小値を入力し、その値をという名前の列に格納することで同じ値を出力していますminimum_score


min(expression)存在するだけです。ドキュメントからの定義:`式`を使用したすべての入力値における式の最小値は、数値、文字列、日付/時刻、ネットワーク、列挙型、またはこれらの型の配列
charlesdg
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.