我想要做的mySQL命令有些困难.
SELECT a.timestamp, name, count(b.name)
FROM time a, id b
WHERE a.user = b.user
AND a.id = b.id
AND b.name = 'John'
AND a.timestamp BETWEEN '2010-11-16 10:30:00' AND '2010-11-16 11:00:00'
GROUP BY a.timestamp
Run Code Online (Sandbox Code Playgroud)
这是我目前的输出声明.
timestamp name count(b.name)
------------------- ---- -------------
2010-11-16 10:32:22 John 2
2010-11-16 10:35:12 John 7
2010-11-16 10:36:34 John 1
2010-11-16 10:37:45 John 2
2010-11-16 10:48:26 John 8
2010-11-16 10:55:00 John 9
2010-11-16 10:58:08 John 2
Run Code Online (Sandbox Code Playgroud)
如何将它们分组为5分钟的间隔结果?
我希望我的输出像
timestamp name count(b.name)
------------------- ---- -------------
2010-11-16 10:30:00 John 2 …Run Code Online (Sandbox Code Playgroud) 我有一个表(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 | …
我有一张这样的桌子:
DateTime A
10:00:01 2
10:00:07 4
10:00:10 2
10:00:17 1
10:00:18 3
Run Code Online (Sandbox Code Playgroud)
这是否可以创建一个查询,每 10 秒返回一次 A 的平均值?在这种情况下,结果将是:
3 (4+2)/2
2 (2+1+3)/3
Run Code Online (Sandbox Code Playgroud)
提前致谢!
编辑:如果您真的认为这无法完成,请说“不”!:) 这是一个可以接受的答案,我真的不知道这是否可以做到。
EDIT2:我使用的是 SQL Server 2008。我想要不同的分组但已修复。例如,范围每 10 秒、1 分钟、5 分钟、30 分钟、1 小时和 1 天(只是一个例子,但类似的东西)
我想从数据库中获取按日期分组的结果.产生的操作应按日期分组,范围从早上5点到早上5点.换句话说,截止时间应该是凌晨5点,而不是午夜12点.我可以GROUP BY DAY(timestamp)按正常日进行分组,但是如果我必须改变时间并且每个记录应该从早上5点到早上5点分组呢?我该如何更改查询?谢谢 ?