移动平均查询 MS Access

2023-11-29

我正在尝试计算数据的移动平均值。我用谷歌搜索并在这个网站和其他网站上找到了很多例子,但我仍然感到困惑。我需要计算为特定产品选择的记录的前 5 个流量的平均值。

我的表如下所示:

TMDT                  Prod  Flow
8/21/2017 12:01:00 AM  A    100
8/20/2017 11:30:45 PM  A    150
8/20/2017 10:00:15 PM  A    200
8/19/2017 5:00:00  AM  B    600
8/17/2017 12:00:00 AM  A    300
8/16/2017 11:00:00 AM  A    200
8/15/2017 10:00:31 AM  A    50

我一直在尝试以下查询:

SELECT b.TMDT, b.Flow, (SELECT AVG(Flow) as MovingAVG
  FROM(SELECT TOP 5 * 
  FROM [mytable] a
  WHERE Prod="A" AND [a.TMDT]< b.TMDT
    ORDER BY a.TMDT DESC)) 
  FROM mytable AS b;

当我尝试运行此查询时,我收到 b.TMDT 的输入提示。为什么 b.TMDT 没有从 mytable 中提取?

我应该使用完全不同的方法来计算我的移动平均线吗?

我想补充一点,我从另一种有效的方法开始,但速度非常慢。对于包含 100 条或更少记录的表来说,它的运行速度足够快。但是,如果表中的记录超过 100 条,那么查询就会突然停止。

原方法如下。 我为每个产品代码创建了两个查询(有 15 个产品):Q_ProdA_Rank 和 Q_ProdA_MovAvg

Q_ProdA_RanK(T_ProdA 是包含产品 A 信息的表):

SELECT a.TMDT, a.Flow, (Select count(*) from [T_ProdA] 
where TMDT<=a.TMDT) AS Rank
FROM [T_ProdA] AS a
ORDER BY a.TMDT DESC;    

Q_ProdA_MovAvg

SELECT b.TMDT, b.Flow, Round((Select sum(Flow) from [Q_PRodA_Rank] where 
Rank between b.Rank-1 and (b.Rank-5))/IIf([Rank]<5,Rank-1,5),0) AS 
MovingAvg
FROM [Q_ProdA_Rank] AS b;

问题是您正在使用嵌套子查询,据我所知(目前找不到文档的正确站点),子查询中的变量范围仅限于子查询的直接父级。这意味着对于您的嵌套查询,b.TMDT 超出了变量范围。

编辑:因为这是一个有趣的问题,也是一个正确提出的问题,所以这里是完整的 SQL 答案。它比您的尝试更复杂,但应该运行更有效

它包含一个嵌套子查询,首先列出每个 TMDT 和产品的 5 个先前流,然后对其求平均值,然后将其与实际查询连接起来。

SELECT A.TMDT, A.Prod, B.MovingAverage
FROM MyTable AS A LEFT JOIN (
    SELECT JoinKeys.TMDT, JoinKeys.Prod, Avg(Top5.Flow) As MovingAverage 
    FROM (
            SELECT JoinKeys.TMDT, JoinKeys.Prod, Top5.Flow
            FROM MyTable As JoinKeys INNER JOIN MyTable AS Top5 ON JoinKeys.Prod = Top5.Prod
            WHERE Top5.TMDT In (
                SELECT TOP 5 A.TMDT FROM MyTable As A WHERE JoinKeys.Prod = A.Prod AND A.TMDT < JoinKeys.TMDT ORDER BY A.TMDT
            )
        )
    GROUP BY JoinKeys.TMDT, JoinKeys.Prod
) AS B
ON A.Prod = B.JoinKeys.Prod AND A.TMDT = B.JoinKeys.TMDT

虽然在我之前的版本中我提倡使用 VBA 方法,但这可能更有效,只是更难以编写和调整。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

移动平均查询 MS Access 的相关文章

  • 访问数据库 LIMIT 关键字

    我试图让我的页面列表功能在 ASP 中与 Access 数据库一起工作 但我不知道 Microsoft SQL 中 LIMIT 的替代方案 我已经尝试过 TOP 但这似乎不起作用 这是 MySQL 中使用的语句 SELECT FROM cu
  • R 中的“右”滚动平均值和“左”滚动平均值是什么?

    如果我想计算之前的n意味着年份滞后于当年 我将如何实现这一点 它像 右 滚动平均窗口一样简单吗 或者它是一个 左 滚动平均窗口 我不确定这里使用哪个窗口 样本数据 set seed 1234 dat lt data frame year c
  • MS Access - 拆分数据库上出现“文件已在使用中”错误

    我在 Windows 7 上的 MS Access 2010 中有一个拆分数据库 后端位于网络驱动器上的一个文件夹中 只有某些人具有写入权限 每个人都有读取权限 每个用户都有自己的前端副本存储在其本地计算机上 BE 和 FE 均设置为对所有
  • 自动电子邮件生成无法解析多个收件人

    我有一个 VBA 脚本 可以创建并保存草稿电子邮件 为了添加收件人 它从链接的 Excel 表中提取一个字符串并将其添加到 Recipients 对象中 对于只有单一收件人的电子邮件 这就像一个魅力 用户所需要做的就是打开草稿 花 5 秒钟
  • 为开发人员记录访问应用程序[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我需要记录一个完全由高级用户创建 开发和维护超过 10 年的 MS Access 应用程序 这是一个有趣的情况 因为他们想要的是一本手册 以便未
  • Access 2007 触发器和过程等效项?

    好的 有人有一些关于 Access 2007 功能 有关触发器或存储过程 的好资源吗 它甚至可以做它们或类似的事情吗 我在 Microsoft 帮助中找到的所有资源都引用了 Access 2003 以及许多在线帮助手册 2007 年一切都发
  • 将 Excel 文件导入 Access 时更改数据类型

    将 Excel 文件导入 Access 时 有什么方法可以更改默认数据类型吗 顺便说一下 我使用的是 Access 2003 我知道有时我可以自由地将任何数据类型分配给正在导入的每个列 但这只能在我导入非 Excel 文件时进行 EDIT
  • 将 Mdb 转换为 Sql Server

    如何使用 C 或其他语言将 mdb 访问文件转换为 sql server 我找到了一个article http channel9 msdn com forums TechOff 234266 Convert MS Access DB to
  • MS Access 中有回车符、换行符常量吗?

    一个简单的问题 我脑子里 我有一个很大的访问数据库需要清理 Access 中是否有用于换行的系统常量 如 VB 的 VBCrLf 如果没有 我想我只需要使用 Chr 13 Chr 10 In VBA vbCrLf是换行常数 以及vbCr a
  • 将 MS Access 连接到网络上的 SQL Server

    我在 Windows 服务器上安装了 SQL Server Express 我有 10 个人在本地 PC 上安装了 MS Access 2016 假设数据库非常小且简单 连接 SQL Server 最简单的方法是什么 简单的 ODBC 可以
  • 运行时错误“3065”无法执行选择查询

    我已经写了很多查询 但我正在努力解决这一问题 当我运行以下 sql 时 出现运行时错误 3065 Dim db As DAO Database Dim sqlstring As String Set db DBEngine 0 Databa
  • 如何对预测值进行反向移动平均(在 pandas 中,rolling().mean)操作? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个像这样的 df import numpy as np import pandas as pd import matplotlib
  • 在 Access 2007 中使用 Group By 计算中位数的最佳方法

    我有一个表 其中包含一本书 然后包含该书的多个价格 这是一个高度简化的示例 ID BOOK PRICE 1 BOOK1 10 2 BOOK1 15 3 BOOK1 12 4 BOOK2 8 5 BOOK2 2 我很容易计算平均值 但是一定有
  • Access 2007 数据库和应用程序的版本控制

    我需要对 Microsoft Access 2007 数据库和应用程序进行版本控制 目前 所有内容都包含在单个 mdb 文件中 该应用程序包括 Forms VBA code 实际数据库 我假设我需要将数据库与表单 代码分开 我希望能够将表单
  • 如何使用 Elastica Search 和 Symfony2 执行嵌套查询

    我有一个食谱实体 其中有一些标签 多对多映射 我想按标签搜索食谱 这是我的食谱实体 ORM Entity ORM Table name recipes ORM HasLifecycleCallbacks ExclusionPolicy al
  • 如何使用 SQL 查询在 Access 中的字段上设置验证规则?

    我正在使用 MS Access 2016 Office 365 目前遇到问题 下面是一个演示此问题的示例 这里我创建了一个表 名为节点家庭链接 由两个字段组成 NodeID 和 FamilyID 如下所示 现在 NodeID 是从另一个表
  • 运行代码(而不是查询)时如何在状态栏上显示进度

    我已经发布了有关在 MS Access 2010 中运行查询时更新状态栏的问题 请参阅在 MS Access 中运行一系列查询时如何在状态栏上显示进度 https stackoverflow com questions 27765376 h
  • 在没有 LinkChild/LinkMaster 的情况下链接子报表

    我正在维护并偶尔修改一个 Access 97 程序 该程序仍然是一家非常大的美国公司的重要部门工具 许多报告使用 总计 子报告 我无法使用 LinkChildFields LinkMasterFields 链接该子报告 在每种情况下 主报告
  • 如何从 SQL Server 存储过程返回值并在 Access VBA 中使用它们

    我已经在 SQL Server 中设置了一个运行良好的存储过程 我现在可以从 VBA 调用它 但想返回一个值以了解是否存在任何错误等 我的 SP 中的最后一个参数设置为 OUTPUT DataSetID int 0 Destination
  • 使用子查询 select 创建新表

    我试图从子查询选择创建一个新表 但出现以下错误 附近的语法不正确 SELECT INTO foo FROM SELECT DATEPART MONTH a InvoiceDate as CalMonth DATEPART YEAR a In

随机推荐

  • 与函数交换变量不会影响调用站点

    几节课前 我学习了变量 并在作业中遇到了一个关于交换两个数字的问题 我使用了第三个变量来解决这个问题 解决方案看起来有点像这样 include
  • F# 泛型函数

    in 与网络对象之间的管道传输 我了解到我可以这样做 let jsonDeserialize json JsonConvert DeserializeObject
  • 在Python中切换字典中的键和值[重复]

    这个问题在这里已经有答案了 假设我有一本像这样的字典 my dict 2 3 5 6 8 9 有没有一种方法可以切换键和值以获得 3 2 6 5 9 8 对于Python 3 my dict2 y x for x y in my dict
  • 如何使用 JPA/Hibernate 映射 XMLType

    如何通过 JPA Hibernate 持久保存 XMLType 列 根据 oracle 文档 有两种方法声明 XMLType 的存储子句 它们是 LOB 和对象关系 我不想和LOB一起去 我有架构并注册到数据库中 我没有关于如何为 XMLT
  • 在 TestNG 中依次运行测试方法

    我正在使用 Eclipse Selenium WebDriver TestNG 这是我的班级结构 class1 test invocation count 4 method1 test invocation count 4 method2
  • 使用 Ipython 退出脚本时不调用 atexit 函数

    下面是在 test atexit py 脚本中编写的代码 def exit function print I am in exit function import atexit atexit register exit function p
  • 便携式 C SWAP 宏,不需要“type”参数,也不使用 memcpy

    采用某种类型的交换宏是众所周知的 define SWAP type a b do type SWAP a a b b SWAP a a b b SWAP while 0 also 宏 SWAP t x y 交换两个类型 t 的参数 是否可以
  • 如何检查电话号码是否是 Android 中有效的 Whatsapp 号码?

    所以我有一个编辑文本 将用作从用户获取电话号码的视图 假设电话号码是 6123456789 我想检查这个号码是否有whatsapp号码 我想避免用户输入假的whatsapp号码 怎么办 更新 2022 年 11 月 Whatsapp 从 v
  • 线程有多贵?

    操作系统本机线程有多贵 主机操作系统为线程堆栈分配一些虚拟内存 并为线程控制结构分配一点内核内存 我错过了什么吗 它会增加调度程序的工作负载 具体取决于线程的繁忙程度以及调度程序的类型 它还将为堆栈的第一页分配物理内存 在许多情况下 主要成
  • 是否存在从 HTML 属性名称到 DOM 属性名称的映射?

    in HTML td style background color pink hello world td 但在 Javascript DOM 中 var td document createElement td td colSpan 3
  • 如何从接口访问嵌套的可选索引

    鉴于以下接口描述这个TS游乐场 export type GetTestimonialsSectionQuery typename Query testimonialsSection typename TestimonialsSection
  • 无法实例化类...;没有空构造函数

    当我运行我的PaintView java 我在 logcat 中收到以下错误 即无法实例化类com example connectthedots PaintView 没有空的构造函数 07 22 18 47 43 453 D dalvikv
  • 无法关闭 Tomcat web 应用程序中的 Neo4j Jetty 服务器

    目前我正在开发一个使用 Neo4j 的网络应用程序 我们的应用需要部署在Tomcat环境中 客户要求 我们决定嵌入 Neo4j 因为这样我们就可以使用 Neo4j 提供的 Java API 更容易部署 并且性能得到提高 但是 我们还需要访问
  • Android:闹钟每 30 分钟播放一次,从 12:30 开始

    这里我将使用闹钟服务每 30 分钟播放一次闹钟 现在我已将其设置为从 Every start 开始每 10 秒播放一次 这是代码 Override public void onCreate Bundle savedInstanceState
  • 将非常大的 JSON 文件转换为 CSV

    我有一个大小约为 8GB 的 JSON 文件 当我尝试使用此脚本转换文件时 import csv import json infile open filename json r outfile open data csv w writer
  • 如何在 php 中创建安全的 mysql 准备语句?

    我是在 mysql 和 php 中使用准备好的语句的新手 我需要一些帮助来创建准备好的语句来检索列 我需要从不同的列获取信息 目前对于测试文件 我使用完全不安全SQL语句 qry SELECT FROM mytable where user
  • 有什么方法可以使用给定的索引节点号搜索文件或文件名吗?

    我正在从用户那里获取索引节点号 并且必须在文件系统中搜索该文件 如何搜索 inode 编号 我必须使用 C 和 unix 来完成此操作 到目前为止 这是我的代码 include
  • 链接命名范围未按预期工作

    我有两个简单的命名范围定义如下 class Numbers lt ActiveRecord Base named scope even conditions gt title gt 2 4 6 named scope odd conditi
  • 通过 grep 两次管道尾部输出

    使用典型的 Apache 访问日志 您可以运行 tail f access log grep 127 0 0 1 它只会显示指定 IP 地址的日志 创建时 但是为什么当你通过管道传输时会失败grep第二次 进一步限制结果 例如 css 的简
  • 移动平均查询 MS Access

    我正在尝试计算数据的移动平均值 我用谷歌搜索并在这个网站和其他网站上找到了很多例子 但我仍然感到困惑 我需要计算为特定产品选择的记录的前 5 个流量的平均值 我的表如下所示 TMDT Prod Flow 8 21 2017 12 01 00