我有一个包含 2 个字段的 SQL 表:TimeStamp 和 Value。以下是部分数据的摘录。
2005-02-17 13:31:00 2
2005-02-17 13:46:00 3
2005-02-17 14:01:00 1.7
2005-02-17 14:16:00 2.3
2005-02-17 14:31:00 2
2005-02-17 14:46:00 2.5
2005-02-17 15:01:00 2.2
2005-02-17 15:16:00 2.4
2005-02-17 15:31:00 2.6
2005-02-17 15:46:00 2.6
2005-02-17 16:01:00 2.7
我正在尝试计算 Value 列的每小时平均值,但是我似乎无法正确执行此操作。最终输出将显示 TimeStamp 的开始时间,以及 Value 列的平均值。
对于最终输出,我希望获得完整的时间戳,而不仅仅是小时。因此,从 2005-02-17 的 14:00 - 14:59 开始,结果输出将是:
2005-02-17 14:00:00 2.125
最佳答案
我会这样做:
SELECT CAST(FLOOR(CAST(timestamp AS float)) AS datetime) AS day --strip time
, DATEPART(hh, timestamp) AS hour
, AVG(value) AS average
FROM times
GROUP BY CAST(FLOOR(CAST(timestamp AS float)) AS datetime)
, DATEPART(hh, timestamp)
示例 fiddle .
关于tsql - 在 SQL 中取每小时平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9744144/