一尘不染

在此表中是否有方法可以按时间间隔进行分组?

sql

我有一张这样的表:

DateTime   A

10:00:01   2 
10:00:07   4
10:00:10   2
10:00:17   1
10:00:18   3

是否可以创建一个查询,该查询每10秒向我返回A的平均值?在这种情况下,结果将是:

3 (4+2)/2
2 (2+1+3)/3

提前致谢!

编辑:如果您真的认为无法做到这一点,那就说不行!:)这是一个可以接受的答案,我真的不知道是否可以做到。

EDIT2:我正在使用SQL
Server2008。我希望具有不同的分组,但已修复。例如,范围分别为10秒,1分钟,5分钟,30分钟,1小时和1天(仅是一个示例,但类似的东西)


阅读 124

收藏
2021-05-23

共1个答案

一尘不染

在SQL Server中,可以使用DATEPART,然后按小时,分钟和第二整数除法10进行分组。

CREATE TABLE #times
(
    thetime time,
    A int
)

INSERT #times
VALUES ('10:00:01', 2)
INSERT #times
VALUES ('10:00:07', 4)
INSERT #times
VALUES ('10:00:10', 2)
INSERT #times
VALUES ('10:00:17', 1)
INSERT #times
VALUES ('10:00:18', 3)

SELECT avg(A)    --   <-- here you might deal with precision issues if you need non-integer results.  eg:  (avg(a * 1.0)
FROM #times
GROUP BY datepart(hour, thetime), DATEPART(minute, thetime), DATEPART(SECOND, thetime) / 10

DROP TABLE #times
2021-05-23