【问题标题】:MS Access - SQL Query for Average of Each Day DataMS Access - SQL 查询每天数据的平均值
【发布时间】:2017-05-25 16:23:56
【问题描述】:

我有一组跨越 3 天的数据。根据左起第一列,是否可以有一个查询来计算左起第三列中每天的值的平均值?

最终结果将是两列:

1/1/2008 | 1.605 
2/1/2008 | 1.59 
3/1/2008 | 1.56

我认为逻辑类似于循环:

  • 以第一列的日期为基准,如果是同一天,统计行数,将第三列的值相加
  • 使用第三列的值之和除以行数得到平均值
  • 天 + 1

但是我们如何在 MS Access 中实现循环呢?

这是一组数据:

编辑: 如果我想按日期分组,昨天的下午 6 点到今天的下午 6 点之间的哪一天?

BETWEEN 子句用于检查昨天 18:00:00 到今天 18:00:00 之间的记录。例如,对于 1/1/2008,记录将从 1/1/2008 6:00PM 开始到 2/1/2008 6:00PM。对于 2/1/2008,记录将从 2/1/2008 6:00PM 开始到 3/1/2008 6:00PM`。等等等等……

我有一个代码 sn-p 来检查这个:

([In process analysis result].[Date Time]) Between Date()-1+#12/30/1899 18:0:0# And Date()+#12/30/1899 18:0:0#)

但它只在前一天分组。如何申请数据集?

编辑 2: 这是我所做的查询,但仍然不正确。知道有什么问题吗?

SELECT DateValue([Date Time]) As DateValue, Avg([MFR g/10min]) AS [AvgOfMFR g/10min]
FROM [In process analysis result]
WHERE ((([Date Time])>Now()-365) AND (([Operation Grade-Load]) Like "EX*") AND (([Date Time]) Between [Date Time]-1+#12/30/1899 18:0:0# And [Date Time]+#12/30/1899 18:0:0#))
GROUP BY DateValue([Date Time]);

【问题讨论】:

  • 请对此提出任何建议。

标签: sql ms-access aggregate-functions average


【解决方案1】:

选择值的 AVG 并按日期分组

【讨论】:

  • 感谢您的回答。可以参考一下我的编辑吗?
  • 抱歉,这里的内容不多,但如果您仍在寻找答案...最快的答案可能是设置另一列(称为绝对日期或其他内容),并使用公式将日期加 6 小时。这样你就可以在那个“绝对”日期分组,但它实际上是指你从 6 小时前开始的时间段。
【解决方案2】:

您的逻辑看起来基本正确。 where 子句看起来不合适。从这个开始:

SELECT DateValue(DateAdd("h", 6, [Date Time])) As DateValue,
       Avg([MFR g/10min]) AS [AvgOfMFR g/10min]
FROM [In process analysis result]
WHERE [Date Time] > DateAdd("yyyy", -1, DateAdd("h", 6, Now())) AND
      [Operation Grade-Load] Like "EX*" 
GROUP BY DateValue(DateAdd("h", 6, [Date Time]));

我不确定BETWEEN 条件应该做什么。如果 你想要一个特定的日期范围,只需使用日期常量。

编辑:日期/时间应偏移 6 小时,如上述编辑。并且应该使用适当的 1 年前表达式。不确定当前时间是否也应该移动 6 小时(如图所示);如果没有,只需删除 Now() 的 DateAdd

【讨论】:

  • 感谢您的回复。 BETWEEN 子句用于检查昨天 18:00:00 和今天 18:00:00 之间的记录。例如,对于 1/1/2008,记录将从 1/1/2008 6:00PM 开始到 2/1/2008 6:00PM。对于 2/1/2008,记录将从 2/1/2008 6:00PM 开始到 3/1/2008 6:00PM`。有可能吗?
  • 您的 Where 子句不起作用。请参阅我对@Gordon 答案的编辑。
  • @Gustav 感谢您的编辑。我试图了解 DateTime 的偏移量。如何查看用于计算平均值的值?只是想验证结果。
  • 你不能。时间部分被剪掉了,所以不可能将日期向后偏移六个小时。
  • @Gustav 这样的话,如果去掉时间部分,意思是根据日期计算平均值?但不是根据昨天的18:00到今天的18:00?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-02
相关资源
最近更新 更多