【发布时间】:2012-04-06 13:55:51
【问题描述】:
我正在尝试将一些记录分组为 5 分钟、15 分钟、30 分钟和 60 分钟的间隔:
SELECT AVG(value) as "AvgValue",
sample_date/(5*60) as "TimeFive"
FROM DATA
WHERE id = 123 AND sample_date >= 3/21/2012
我想运行几个查询,每个查询都会将我的平均值分组到所需的时间增量中。所以 5 分钟的查询会返回如下结果:
AvgValue TimeFive
6.90 1995-01-01 00:05:00
7.15 1995-01-01 00:10:00
8.25 1995-01-01 00:15:00
30 分钟的查询将导致:
AvgValue TimeThirty
6.95 1995-01-01 00:30:00
7.40 1995-01-01 01:00:00
datetime 列采用yyyy-mm-dd hh:mm:ss 格式
我的datetime 列出现隐式转换错误。非常感谢任何帮助!
【问题讨论】:
-
“分组到不同的间隔”对我来说并不明显。回想一下结果必然是列中的行,您能否展示数据的示例行的样子?特别是我不清楚,一个 id 会在 1 个 5 分钟组中,也在一个 15 分钟组中,也在一个 30 分钟组中......等等。例如,如果每条记录将分为 4 组,那么您希望结果中的列的名称是什么?
-
另外,如果您要发布一些 sql 问题,1) 始终使用特定类型的服务器标记问题(我从标题中看到它是 MS SQL,但如果您使用他们建议你可以指定一个版本的标签)和 2)你可以通过花时间设置一个 sql fiddle(sqlfiddle.org)来降低“弄清楚问题意味着什么的成本”;它可以让您输入要查询的示例数据。
-
只是为了澄清一些事情:SQL Server 中的
DATETIME从不以基于字符串的格式存储 - 它在内部存储为两个 4 字节的 INT 值。该格式可能是您的默认演示文稿 - 但它不以该格式存储! -
sample_date实际上是datetime类型吗?如果是这样,它没有有格式(这很好) -
sample_date 是类型(smalldatetime,not null)
标签: sql sql-server sql-server-2008 aggregate-functions