【发布时间】:2012-02-09 12:29:50
【问题描述】:
数据库有一个transactions 表,其中包含以下列:account_id、date、transaction_value(有符号整数)。另一个表 (account_value) 存储每个帐户的当前总值,这是每个帐户所有 transaction_values 的总和。它使用transactions 表上的触发器进行更新(即,对transactions 的INSERT、UPDATE 和DELETE 触发触发器以更改account_value。)
一项新要求是仅在过去 365 天内计算帐户的总交易价值。只需要当前运行总计,而不需要以前的总计。将经常请求此值,几乎与account_value 一样频繁。
您将如何有效地实现这种“滑动窗口总和”?一个新的表是好的。有没有办法避免每次对一年的范围求和?
【问题讨论】:
-
您是否保留了一年中所有不同日子的所有这些运行总计的记录?这样您就可以在单个报告中查看整个月的值?
-
套用 Dems 的话说,您只是想要“从今天开始的最后 365 天”还是想要“从其他范围的每一天开始的最后 365 天”?
-
@gbn,今天才总结。
-
@Dems,只从今天开始总结,不需要每天的总和。
-
@user1147339:然后使用我的解决方案:不要预先计算它
标签: sql database-design sliding-window