使用的是Postgres 9.3 ...Postgres:在int数组中寻找最大值?
是否有人可以解释为什么我不能在嵌套的阵列上直接使用最多的功能..?
这是我的理解unnest函数返回一个“setof”就像select语句。那么为什么这个查询的短版本不起作用? (我在概念上缺少什么东西,或者是我的问题是与语法有关的问题吗?)
table: foo_history:
id | history::smallint
-----------------------------------
1 | {10,20,30,50,40}
这不起作用?
Select id, max(unnest(history)) as vMax from foo_history;
......但是这个确实......?
WITH foo as (
select id, unnest(history) as history
from foo_history
)
Select
id, max(history) as vMax
From foo
Group by id;
虽然我写我自己的函数所以解决这个问题,我还是有点困惑。 'unnest'函数返回一组行,并且max函数对一组行进行操作。有没有一个错误,或者有什么我只是没有得到? – user2259963 2015-02-06 17:35:48
是的,有。 'max'是一个聚集,所以它每个元组都有一个输入。它不能像这样输入一个集合。要做你描述你表达它的方式,你需要使用一个子查询,比如'select id,(从unnest(history)x)中选择max(x)作为foo_history'的vmax。 – 2015-02-07 04:42:53