分组sum()由灵活间隔分区

时间:2012-11-13 22:03:57

标签: sql sql-server sql-server-2008 tsql

我有一些数据如下(这里只是几个示例行,tablesize > n千个条目)

timestamp         duration

2012-09-30T22:00  10800
2012-10-01T08:00   7200
2012-10-01T15:00   3600
2012-10-01T22:00  10800
2012-10-02T07:00   3600
2012-10-02T14:00  18000

旨在实现以下目标:

date               totalDuration

2012-09-30        21600
2012-10-01        32400

等等。

每个时间间隔应累计持续时间,在此示例中,时间间隔从22:00每天开始。 这是SQL Server 2008。

1 个答案:

答案 0 :(得分:3)

select 
    cast(dateadd(hour, -22, date) as date), 
    sum(duration) totalDuration
from yourtable
group by cast(dateadd(hour, -22, date) as date)

但是,您应该注意2012-09-30T22:002012-10-01T22:00不应该在同一个“时间框架日”。 2012-09-30T22:002012-10-01T21:59可以在同一天。

将此与1-10和10-20等阈值进行比较。 10属于哪里?