在基於CodeIgniter的PHP網站上,用戶可以獲得各種操作的聲望,與Stack Overflow不同。每獲得一次信譽,就會在MySQL表中創建一個新條目,其中包括user_id
,獎勵的行爲以及該點數的價值(例如10點信譽)。同時,users
表中的字段reputation_total
被更新。如何計算不同時間跨度的積分總數百分等級?
因爲所有這些都沒有參考框架是沒有意義的,所以我想向所有用戶顯示它們的百分比等級。對於整體聲譽來說,這似乎很容易。假設我的user_id
是1138
。只需要將users
表中的用戶數量與reputation_total
少於我的數量相比較,然後對用戶總數進行計數,然後進行分配,以找到名譽低於我的用戶的百分比。這將是用戶1138的百分比排名,對不對?簡單!
但是我也在不同的時間跨度上顯示聲望總數 - 例如,在過去七天內賺取的費用,包括查詢聲望表並累計自給定日期以來所賺取的所有積分。我還希望顯示不同時間段的百分位數 - 例如,我可能是整體的第11百分位,但本月爲第50百分位,今天爲第97百分位。
看來我將不得不經過並找出所有用戶在給定時間範圍內的聲譽總數,然後看看我在該組中的位置,不是嗎?這不是非常麻煩嗎?什麼是最好的方法來做到這一點?
非常感謝。
不復雜,沒有 - 但我必須爲每個用戶都這樣做,對嗎?雖然這不會很複雜,但是這不會是...好...慢嗎? – Toph 2009-06-17 13:56:07