Допустим, у меня есть такая таблица:
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 () работают по строкам, а не по столбцам.
Можно ли сделать то, что я пытаюсь?
источник
MAX()
два значения, этоGREATEST(a, b)
:)Вот ссылка на документы для
LEAST()
функции в PostgreSQL:http://www.postgresql.org/docs/current/static/functions-conditional.html#AEN15582
источник
Вы можете получить ответ, поместив эти данные в столбец следующим образом:
Здесь мы помещаем минимальное значение среди
score_a
иscore_b
и печатаем одно и то же, сохраняя это значение в столбце с именемminimum_score
.источник
min(expression)
существует. Определение из документа: минимальное значение выражения для всех входных значений с `expression` - это любой числовой тип, строка, дата / время, тип сети или перечисления, или массивы этих типов