mysql 中的运行平均值

2023-12-07

我有如下表

id   timestamp  speed
1    11:00:01   100
2    11:05:01   110
3    11:10:01   90
4    11:15 :01  80

我需要计算移动平均线,如下所示

id   timestamp  speed average
1    11:00:01   100   100 
2    11:05:01   110   105
3    11:10:01   90    100
4    11:15:01   80    95

我尝试过的

SELECT 
*,
(select avg(speed) from tbl t where tbl.timestamp<=t.timestamp) as avg
FROM 
tbl

乍一看很简单,但是当表上的数据膨胀时,就太慢了

还有更快的方法吗?


您的查询是执行运行平均值的一种方法:

SELECT t.*,
       (select avg(speed) from tbl tt where tt.timestamp <= t.timestamp) as avg
FROM tbl t;

另一种方法是使用变量:

select t.*, (sum_speed / cnt) as running_avg_speed
from (select t.*, (@rn := @rn + 1) as cnt, (@s := @s + speed) as sum_speed
      from tbl t cross join
           (select @rn := 0, @s := 0) params
      order by timestamp
     ) t;

上的索引tbl(timestamp)应进一步提高性能。

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

mysql 中的运行平均值 的相关文章

随机推荐

  • powershell:如何单击“提交类型”输入

    使用 powershell 进行 Web ui 自动化 出现异常 调用方法失败 因为 System ComObject 不包含 click 方法 提交类型输入可以点击吗 我使用 getElementsByTagName getElement
  • 随机猜数字游戏

    我正在制作一个随机猜数字游戏 计算机会想到 1 100 之间的数字 然后它会问你这是什么 并告诉你是对还是错 然而 每当我调试时 它都会说由于某种原因它高于或低于实际的随机数 另外 它同时说了其中的两个陈述 另外 我不知道如何说出这个人进行
  • 查找上一个和下一个同级控件

    有没有一种方法可以从代码隐藏中查找 ASP net 表单中的上一个和下一个同级控件 类似于 findControl 有时您不想为控件分配 ID 以便可以执行 Parent findControl ID 来查找它 当我所能做的就是 previ
  • 为什么这个通配符函数告诉我它的参数数量错误?

    违规代码是
  • 如何在 org 模式下强调或逐字引用逗号?

    我试着用逗号 大胆 但没有成功 我逐字尝试过 但也没有成功 您可以通过将以下内容添加到您的 emacs setcar nthcdr 2 org emphasis regexp components t r n org set emph re
  • 对象的内部表示

    所以一直以来我都认为 当您执行类似 ObjectA field1 之类的操作时 ObjectA 就像堆栈上的任何值一样 您基本上可以访问它的字段 现在我正在浏览有关 OOP 语言的课程的笔记 并意识到当您执行 ObjectA field1
  • Laravel:生成的 SQL 仅在特定表上抛出错误

    我正在通过 Laravel 使用 Eloquent ORM 或查询生成器访问 MS SQLServer 这在所有表上都可以正常工作 但一个特定的表会引发此错误 production ERROR exception Illuminate Da
  • 用于比较文件的 Bash 脚本

    我有一个文件夹 里面有大量旧照片 其中有很多重复的照片 手动排序需要很长时间 所以我想利用这个机会使用 bash 现在我有代码 bin bash directory Desktop Test for file in directory do
  • Kinect 帧异步到达

    我正在寻找有关 Kinect v2 SDK 中的 MultiSourceFrameArrived 事件的帮助 以下是有问题的方法 private async void reader MultiSourceFrameArrived objec
  • 如何在 PHP 中访问 stdClass 的成员

    我有一个已解码的 JSON 对象 但无法访问该元素 因为它会引发错误 stdClass Object error gt InvalidRegistration echo device response gt error gives an e
  • 使用 Jupyter Notebook 时“无法从正在运行的事件循环调用 asyncio.run()”

    我想使用 asyncio 来获取网页 html 我在 jupyter 笔记本中运行以下代码 import aiofiles import aiohttp from aiohttp import ClientSession async def
  • 使用 C# CryptoStream 的 Java 等效项加密和解密字符串

    我正在考虑用 Java 为移动平台操作系统开发应用程序 我已经在 Windows 环境下用 C WPF 开发了一个应用程序 我正在使用加密流来使用以下代码加密和解密字符串 下面显示的代码只是加密 public string encrypt
  • 应用程序未在设备启动时启动

    我使用 BroadcastReceiver 在启动时启动我的应用程序 但它没有启动 这是我的代码 清单代码
  • 如何使 Facebook 应用程序授权弹出窗口显示在 Facebook 页面上的叠加层中

    这正是我所看到的 http www facebook com cocacola sk app 192765884109675我不知道他们是怎么做到的 我尝试了 fb ui 更改显示选项 它总是只给我一个弹出窗口 那么如何进行叠加呢 提前致谢
  • 初始化对象以处理空查询结果

    我有一个像这样的对象模型 public class MyObject public int Prop1 get set public int Prop2 get set 我在 linq to sql 查询中使用这个对象 如下所示 var M
  • JavaScript 组对象

    我已经找了几天了 还没有找到这个具体问题的答案 我正在从 API 中的端点接收 JavaScript 对象数组 我需要根据类型将对象分组在一起 硬编码对象数组示例 scope content things thing one thingTy
  • 使用 HttpClient 模拟 HTTP POST 时出现问题

    我正在尝试使用 HttpClient 以编程方式发送 HTTP Post 请求http ojp nationalrail co uk en s planjourney query但它不喜欢我发送给它的请求 我从 Chrome 浏览器发送的内
  • Selenium Test - 在多个测试运行中保留会话

    我有以下问题 当我开始我的selenium测试时 为了到达执行实际测试的部分 我需要启动浏览器 登录 做一些其他操作 然后就到了我想要测试的部分 有没有办法只执行第一部分一次 让会话和浏览器保持打开状态 对于下一次测试运行 仅继续此会话 而
  • 如何在jasper报告中显示图像

    我创建了一个 jasper 报告 但现在我需要在该 jasper 报告中放置徽标 我将报告和徽标放在同一文件夹中 但我无法运行该报告 它说 net sf jasperreports engine JRException Byte data
  • mysql 中的运行平均值

    我有如下表 id timestamp speed 1 11 00 01 100 2 11 05 01 110 3 11 10 01 90 4 11 15 01 80 我需要计算移动平均线 如下所示 id timestamp speed av