提高查询性能,计算MS-Access中大型数据集的7天滚动平均值

问题描述

我有一个300,000条记录的大表,其中一个字段是仅日期字段,另一个字段是购买计数。我需要每天将七个滚动日平均值(实际上是六个)运行到另一个表中。任何购买日期或数字都可以更改,所以我不能只使用现有数据。

我正在做的事情是从销售的第一天开始,通过VBA创建一个,然后执行带有dsum的查询并更新汇总表,以便初始查询看起来像...

  Select dsum(purchases)/7 from purchases as rollingAvg7 where purchaseDate between #01/11/2020# and #07/11/2020#

要运行这些查询,每个查询大约需要两分钟。请问有更好的更快的方法吗?

解决方法

首先,日期值的字符串表达式不能采用dd / mm / yyyy格式。使用 ISO序列,该序列在包括ADO在内的任何地方都可以使用。

接下来,如果购买量是每天的总金额,则可以直接使用平均来找到平均值:

select avg(purchases)
from purchases as rollingAvg7 
where purchaseDate between #2020/11/01# and #2020/11/07#

如果您是个人购买商品-每天返回多个记录,请使用sum / 7