在我的一張表格中,我有以下結(jié)構(gòu):,
ID LOG
1 [{"x":12,"W":1}, {"x":24,"W":2}]
2 [{"x":14,"W":1.02}, {"x":20,"W":2.2}, {"x":11,"W":1.022}, {"x":45,"W":62.2}]
我在計算應用程序端x的加權(quán)平均值,我想創(chuàng)建一個名為weighted_avg_x
的生成列,每當數(shù)據(jù)被附加到LOG
列時,它都會被更新。有兩個問題可以用生成的列來解決嗎?我對jsonb符號計算sum(x*w)/sum(w)
有點迷茫?
您需要一個不可變函數(shù),可用于定義生成的列:
這種解決方案在Postgres 12+中是可能的。在早期版本中,需要定義觸發(fā)器。
在db<>fiddle中測試它。