在一个拥有25年价值数据的Access表中计算每月的logging数量

这可能是一个非常简单的问题,但我无法find一个与在这么长时间内传播的数据集有关的答案。 对于初学者来说,这是从一个较早的职位继续进行的,我想从一个跨越数年的每个月的数据中统计出logging的数量 – 问题的主体如下:

我已经下载了一个数据集,详细介绍了1979年1月至2004年12月期间在英格兰报告的所有车祸事件 – 该文件采用csv格式,可以理解的是相当大(准确的说是6,224,199行)。 由于文件的大小超过了Excel 2010可以处理的行数,因此我必须将文件拆分为更小的文件才能在Excel中一次打开。 我尝试使用记事本和记事本+ +,但记事本崩溃,记事本++拒绝打开如此之大(720MB)的文件。 我已经考虑使用像Delimit这样的Excelreplace,但是它不支持macros。 现在,忽略大小问题,我需要计算每个月的崩溃总数,并记下它们。 有一个列来指定每个崩溃的date,但行不是根据崩溃datesorting。 我正在考虑使用CTRL + F来计算具有特定的月份/年份值的行数,然后logging每个search的结果数量,但考虑到数据跨越了25年,我不得不手动search并logging从300个月结果。

对这个问题的评论告诉我,将包含数据的csv文件导入到Microsoft Access中会更容易,然后查询数据。 我遵循这些评论者的build议,并将(6,224,199)logging导入到一个新的Access表中,但现在我一直在写SQL查询。

我对Access没有多less经验,但是我收集到了我应该用一个COUNT命令来声明每个月的事故报告数量。 问题是这个数据跨越了25年,所以在我拼凑起来的(基本)声明中,为了得到每年每个月的报告总数,我必须运行它300次。


编辑

我已经删除了起始表中的很多列 – 我这样做是因为我只需要知道每个月发生了多less事故,并且csv文件/起始表有很多信息对我没有用处(如道路types,警力,光线条件)。 该表在以下数据types中具有以下列:

  • ID(自动编号)
  • date(date/时间)
  • Day_of_Week(数字)
  • 时间(date/时间)

在输出中,我只需要按照最早(1979年1月)到最近(2004年12月)的顺序每月发生的事故数量。 由于每年每个月只有一个数字,因此可能会有第二列列出月份/年份,但这对于我使用这些数据不是必要的。

我们可以给你SQL,但我怀疑这会更混乱。 所以,假设你正在使用查询UI:

您需要点击顶部的'sum'符号(请参阅图片)来打开聚合,并尝试如下所示:

访问查询UI窗口

这里是你可以用来做到这一点的SQL。 它本质上和上面的回答你一样。 只需创build一个新的查询,然后右键单击并selectSQL视图。 然后将其复制到:

 SELECT Format([Date],"yyyy-mm") AS [Month of Crashes], Count([Accidents].ID) AS [Crashes this Month] INTO Crashes_per_Month FROM [Accidents] GROUP BY Format([Date],"yyyy-mm"); 

注意:这个SQL假定你的起始表叫做Accidents 。 您将不得不将这个更改为您的表名称的两个实例表名称Accidents被提及。