假设我有一张这样的桌子:
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() 似乎跨行而不是跨列工作。
有可能做我正在尝试的事情吗?
LEAST(a,b):
GREATEST 和 LEAST 函数从任意数量的表达式列表中选择最大值或最小值。表达式必须都可以转换为通用数据类型,这将是结果的类型(详见第 10.5 节)。列表中的 NULL 值被忽略。仅当所有表达式的计算结果为 NULL 时,结果才会为 NULL。请注意,GREATEST 和 LEAST 不在 SQL 标准中,但它们是常见的扩展。如果任何参数为 NULL,而不是仅当所有参数都为 NULL 时,其他一些数据库会使它们返回 NULL...
以下是 PostgreSQL 中 LEAST()
函数的文档链接:
http://www.postgresql.org/docs/current/static/functions-conditional.html#AEN15582
您可以通过将该数据放入这样的列中来获得答案:
SELECT name, MIN(score_a, score_b) as minimum_score
FROM table
在这里,我们将最小值放在 score_a
和 score_b
之间,并通过将该值存储在名为 minimum_score
的列中来打印相同的值。
min(expression)
存在。文档中的定义:所有输入值中表达式的最小值,表达式为任何数字、字符串、日期/时间、网络或枚举类型,或这些类型的数组
不定期副业成功案例分享
MAX()
的人,它是GREATEST(a, b)
:)