SQL SERVER - 按 n 分钟间隔对记录进行分组

标签 sql t-sql sql-server-2012

我有一个这样的表:

     [SDate - DateTime]              [Value - Decimal]
    2010-11-16 10:32:22                     1
    2010-11-16 10:58:08                     2

我需要一个查询来按 n 分钟间隔对记录进行分组。

输出可以是例如(按 60 分钟分组):

    2010-11-16 10:10:00   avg(Value)
    2010-11-16 10:11:00   avg(Value)
    2010-11-16 10:12:00   avg(Value)

到目前为止,我一直使用此查询按 10 分钟间隔进行分组,因为间隔在 0 到 60 分钟之间:

...
GROUP BY
DATEPART(YEAR, SDate),
DATEPART(MONTH, SDate),
DATEPART(DAY, SDate),
DATEPART(HOUR, SDate),
(DATEPART(MINUTE, SDate) / 10)

但现在间隔可以是 125436758 分钟,例如。

我无法创建新表,并且用户定义的时间间隔必须为 n 分钟。 我正在使用 SQL SERVER 2012。谢谢。

最佳答案

GROUP BY 
...
(DATEDIFF(MINUTE, 0, SDate) / @n)

关于SQL SERVER - 按 n 分钟间隔对记录进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26788729/

相关文章:

MySQL 事务/提交查询

mysql - SQL 将行数据与同一个表合并和连接

sql - 分组,同时将上一行值添加到下一行

sql - 将带有图像的 Excel 数据导入 SQL Server

sql - 对于查询的 where 子句部分,如何将 IN 运算符替换为 EXISTS 运算符?

php - 使用 PHP/MySql/PDO 更新除自增字段以外的所有值

sql - 插入时 float 更改为科学记数法

sql-server - sql server 中是否有 DEBUG 开关可以在查询结果中包含调试信息?

sql-server - 尝试使用 switch case 语句获取单列数据

sql - SQL Server 中的条件 XML 修改