使用的是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