我有一张评级表.归结为:
rating_value created
+2 april 3rd
-5 april 20th
Run Code Online (Sandbox Code Playgroud)
因此,每次有人获得评级时,我都会在数据库中跟踪该评级事件.
我想生成一个评级历史/时间图,其中评级是图表上该时间点之前所有评级的总和.
IE 4月5日的评级可能是 select sum(rating_value) from ratings where created <= april 5th
这种方法的唯一问题是我必须在我感兴趣的时间间隔内逐日运行.使用这种数据生成运行总计是否有一些技巧?
否则,我认为最好的方法是在个别评级旁边创建一个非规范化的"评级历史"表.
如果你有postgresql 8.4,你可以使用window-aggregate函数来计算一个运行总和:
steve@steve@[local] =# select rating_value, created,
sum(rating_value) over(order by created)
from rating;
rating_value | created | sum
--------------+------------+-----
2 | 2010-04-03 | 2
-5 | 2010-04-20 | -3
(2 rows)
Run Code Online (Sandbox Code Playgroud)
见http://www.postgresql.org/docs/current/static/sql-expressions.html#SYNTAX-WINDOW-FUNCTIONS
| 归档时间: |
|
| 查看次数: |
4010 次 |
| 最近记录: |