[英]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/2
是0
,而不是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.