当前位置: 首页 > 面试题库 >

SELECT / GROUP BY-时间段(10秒,30秒等)

亢建白
2023-03-14
问题内容

我有一个表格(MySQL),每n秒捕获一次样本。该表有很多列,但与此相关的只有两列:时间戳(TIMESTAMP类型)和计数(INT类型)。

我想做的是获取一定时间范围内count列的总和和平均值。例如,我每2秒记录一次样本,但是我希望所有样本的计数列的总和在10秒或30秒的窗口中。

这是数据示例:

+ --------------------- + ----------------- +
| time_stamp | 数|
+ --------------------- + ----------------- +
| 2010-06-15 23:35:28 | 1 |
| 2010-06-15 23:35:30 | 1 |
| 2010-06-15 23:35:30 | 1 |
| 2010-06-15 23:35:30 | 942 |
| 2010-06-15 23:35:30 | 180 |
| 2010-06-15 23:35:30 | 4 |
| 2010-06-15 23:35:30 | 52 |
| 2010-06-15 23:35:30 | 12 |
| 2010-06-15 23:35:30 | 1 |
| 2010-06-15 23:35:30 | 1 |
| 2010-06-15 23:35:33 | 1468 |
| 2010-06-15 23:35:33 | 247 |
| 2010-06-15 23:35:33 | 1 |
| 2010-06-15 23:35:33 | 81 |
| 2010-06-15 23:35:33 | 16 |
| 2010-06-15 23:35:35 | 1828 |
| 2010-06-15 23:35:35 | 214 |
| 2010-06-15 23:35:35 | 75 |
| 2010-06-15 23:35:35 | 8 |
| 2010-06-15 23:35:37 | 1799 |
| 2010-06-15 23:35:37 | 24 |
| 2010-06-15 23:35:37 | 11 |
| 2010-06-15 23:35:37 | 2 |
| 2010-06-15 23:35:40 | 575 |
| 2010-06-15 23:35:40 | 1 |
| 2010-06-17 10:39:35 | 2 |
| 2010-06-17 10:39:35 | 2 |
| 2010-06-17 10:39:35 | 1 |
| 2010-06-17 10:39:35 | 2 |
| 2010-06-17 10:39:35 | 1 |
| 2010-06-17 10:39:40 | 35 |
| 2010-06-17 10:39:40 | 19 |
| 2010-06-17 10:39:40 | 37 |
| 2010-06-17 10:39:42 | 64 |
| 2010-06-17 10:39:42 | 3 |
| 2010-06-17 10:39:42 | 31 |
| 2010-06-17 10:39:42 | 7 |
| 2010-06-17 10:39:42 | 246 |
+ --------------------- + ----------------- +

我想要的输出(基于上面的数据)应如下所示:

+ --------------------- + ----------------- +
| 2010-06-15 23:35:00 | 1 | #这是00-30秒范围内的总和
| 2010-06-15 23:35:30 | 7544 | #这是30到60秒范围内的总和
| 2010-06-17 10:39:35 | 450 | #这是30到60秒范围内的总和
+ --------------------- + ----------------- +

我已经使用GROUP BY来按秒或按分钟来收集这些数字,但是我似乎无法弄清楚语法来获得GROUP BY命令的不到分钟或几秒的范围才能正常工作。

我将主要使用此查询将数据从该表虹吸到另一个表。

谢谢!


问题答案:

GROUP BY UNIX_TIMESTAMP(time_stamp) DIV 30

或者说由于某种原因,您希望将它们以20秒的间隔进行分组,以此类推DIV 20。要更改GROUP BY值之间的边界,可以使用

GROUP BY (UNIX_TIMESTAMP(time_stamp) + r) DIV 30

这里r的文字非负整数小于30。因此

GROUP BY (UNIX_TIMESTAMP(time_stamp) + 5) DIV 30

应该给您在hh:mm:05和hh:mm:35之间以及hh:mm:35和hh:mm + 1:05之间的总和。



 类似资料:
  • 我从GPS接收机接收到一个时间戳,它以秒后的微秒时间表示:

  • 在我的脚本中,我提取了一个excel,在一个名为“Time”的列中有一个dtype对象,在该列中有一个类似于“14:00:00”的小时,我想将该列转换为_datetime,但是当我这样做时: 我把年、月和日加在一起,我不希望发生这种情况,我还想把这列作为日期时间,这样我就可以减去另一个时间,得到秒。我如何将其传递到只有小时、分钟和秒的datetime?

  • 我正在开发一个Spring boot应用程序,当响应时间超过30秒时,我必须抛出一个错误。 因为我正在使用应用程序。yml,我试过了 因为它不工作,尝试使用application.properties-. it不工作。 试图找出如何在这两种情况下抛出系统错误。即当系统空闲后发生超时且响应时间超过30秒时

  • 问题内容: 这是我的代码: 是否可以在日期格式中添加毫秒和纳秒? 问题答案: 您可以通过在末尾添加来添加毫秒数,例如格式为。 毫微秒内没有参考。通常用于性能调试,而不用于显示目的。

  • 问题内容: 在pandas数据框中有一个datetime列,其值如下: 我想知道如何舍入这些值,摆脱毫秒,仅将日期,小时,分钟和00表示为秒,如下所示: 问题答案: 使用与用于分钟设置: 我想将时间值更改为下一个值:

  • 我有一个30分钟的视频。我想每30秒跳过3秒。并继续到视频的结尾。并将所有30s视频连接在一起例如:00:00:00至00:30:00+00:33:00至00:63:00+00:66:00至00:96:00.....结束的视频就到这里,请帮我写