簡體   English   中英

Postgres SQL:如何在更改平均值的現有值后重新計算平均值

[英]Postgres SQL : how do I recalculate average value, after an existing value from the average has been changed

使用下面的函數,當您第一次對標題進行評分,然后為該標題給出不同的評分時,該標題的平均評分將是不正確的。

標題 'tt9910206' 的投票數為 4,在調用該函數之前平均為 8。 第一次調用該函數並給出 7 分時,numvotes 為 5,預期平均值為 7,8,該函數確實返回該值。 但是當將評分從 7 更改為 8 時,預期結果為 8,但函數返回 7,84。

我懷疑這是因為在重新計算平均值時,該函數沒有考慮到用戶已經取消了他們的評分。 我該如何解決這個問題,所以當用戶更改他們的評分時,該函數會使用用戶最初給它評分之前的平均評分數來重新計算平均值?

編輯:在這里找到答案

替換當前值后求平均值

您的函數中可能還有其他問題。 但是您似乎忘記了 Postgres 進行整數除法。 所以, 1/20 ,而不是0.5

我注意到這樣的計算:

count( user_titlerate.tconst ) / count( user_titlerate.tconst ) 

COUNT()返回整數。 我通常將其修改為:

count( user_titlerate.tconst ) * 1.0 / count( user_titlerate.tconst ) 

但是您可以使用其他結構,例如:

count( user_titlerate.tconst )::numeric / count( user_titlerate.tconst ) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM