我有下面的表:更新基於其他列的列在PostgreSQL
id integer
sumqty numeric
maxqty numeric
id, sumqty
是由其他功能定期更新的列。 我需要編寫一個傳遞這兩列的函數並更新maxqty
列。
例如:功能運行後
id, sumqty, maxqty
5 20
5 70
5 45
3 20
1 12
1 2.5
,所需的輸出將是:
id, sumqty, maxqty
5 20 45
5 10 45
5 45 45
3 20 20
1 12 12
1 2.5 12
我寫了這個代碼:
update A set maxqty= (select MAX(sumqty) OVER (PARTITION BY id))
,但它並不總是有效。有時它不會給我真正的MAX。
我的代碼有什麼問題?
創建一個視圖,而不是和你永遠不會有不一致的數據。 (或者使用觸發器。)存儲計算數據通常是一個糟糕的主意(來自其他列)。 – jarlh
好,但仍然如此,爲什麼它不會像預期的那樣產生MAX? – SMW