相关疑难解决方法(0)

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

我有一个表(MySQL),每隔n秒捕获一次样本.该表有许多列,但重要的是两个:时间戳(TIMESTAMP类型)和计数(INT类型).

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

这是一个数据示例:

+---------------------+-----------------+
| time_stamp          | count           |
+---------------------+-----------------+
| 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 | …

mysql sql select group-by

39
推荐指数
2
解决办法
3万
查看次数

查找在给定时间段内发生x次的事件

假设我有以下表格:

CREATE TABLE `occurences` (
  `object_id` int(10) NOT NULL,
  `seen_timestamp` int(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Run Code Online (Sandbox Code Playgroud)

其中包含对象的ID(不唯一,重复)和观察此对象ID时的时间戳.

观察每周7天,每天24小时运行,并插入每个出现的对象ID和当前时间戳.

现在我想编写查询来选择在任何10分钟时间内至少看过7次的所有对象ID.

它应该像检测入侵一样起作用.

在denyhost脚本中使用类似的算法来检查无效的SSH登录.如果在配置的时间段内找到配置的出现次数,则会阻止IP.

有什么好建议吗?

mysql group-by count

8
推荐指数
1
解决办法
1075
查看次数

无论时区如何,都将MySQL日期时间分组为间隔

之前已经问这个问题,但我面临的问题略有不同.

我有一个表记录事件并存储他们的时间戳(作为日期时间).我需要能够将时间分解成块并获得在该间隔中发生的事件的数量.间隔可以是自定义的(比如5分钟到1小时甚至更长).

显而易见的解决方案是将datetime转换为unix_timestamp,将其除以间隔中的秒数,取其底层函数并将其乘以秒数.最后将unix_timestamp转换回日期时间格式.

这适用于小间隔.

select 
from_unixtime(floor(unix_timestamp(event.timestamp)/300)*300) as start_time,
count(*) as total 
from event 
where timestamp>='2012-08-03 00:00:00' 
group by start_time;
Run Code Online (Sandbox Code Playgroud)

这给出了正确的输出

+---------------------+-------+
| start_time          | total |
+---------------------+-------+
| 2012-08-03 00:00:00 |    11 |
| 2012-08-03 00:05:00 |     4 |
| 2012-08-03 00:10:00 |     4 |
| 2012-08-03 00:15:00 |     7 |
| 2012-08-03 00:20:00 |     8 |
| 2012-08-03 00:25:00 |     1 |
| 2012-08-03 00:30:00 |     1 |
| 2012-08-03 00:35:00 |     3 | …
Run Code Online (Sandbox Code Playgroud)

mysql datetime timestamp group-by

8
推荐指数
1
解决办法
3171
查看次数

标签 统计

group-by ×3

mysql ×3

count ×1

datetime ×1

select ×1

sql ×1

timestamp ×1