【问题标题】:SQL SERVER - Group records by n minutes intervalSQL SERVER - 按 n 分钟间隔对记录进行分组
【发布时间】:2015-01-03 12:08:46
【问题描述】:

我有一张这样的桌子:

     [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。谢谢。

【问题讨论】:

    标签: sql tsql sql-server-2012


    【解决方案1】:
    GROUP BY 
    ...
    (DATEDIFF(MINUTE, 0, SDate) / @n)
    

    【讨论】:

    • 它可以工作,但我怎样才能得到像 2010-11-16 10:10:00 这样的输出?谢谢
    • 看看FORMAT()函数的不同输出选项。
    • 如果您需要将 n 分钟周期格式化为输出中的日期,请考虑 this 回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-10
    相关资源
    最近更新 更多