我是说我有一个表这样的:

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()and MIN()出现工作 而不是 列。

这是能够做什么,我尝试?

有帮助吗?

解决方案

(a、b):

GREATESTLEAST 功能选择最大的或最小值从一个名单的任何数量的表达方式。表示必须以可转换为一个共同的数据类型,其中将的结果的类型(见 第10.5 详情)。空值的列表中被忽略。结果将是空只有在所有的表情评估为空。

注意, GREATESTLEAST 是不是在SQL标准,但是一个共同的扩展。其他一些数据库使他们返回NULL如果任何论点是空的,而不是只有当所有空...

其他提示

这里的链接到文档为PostgreSQL中LEAST()功能:

http://www.postgresql.org/docs/电流/静态/功能-conditional.html#AEN15582

您可以通过将这些数据转化为一列像这样得到的答案:

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

下面,我们通过存储在名为score_a列值把score_bminimum_score中的最小值和打印相同。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top