sql - 分组总和()按灵活间隔分区

标签 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。

最佳答案

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 属于哪里?

关于sql - 分组总和()按灵活间隔分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13369638/

相关文章:

sql-server-2008 - 在将所有函数放入 SQL Server 之前,如何从 CLR 程序集中删除所有函数?

sql - 复杂的 sql 查询 - 在一个查询中选择所有房东的属性并减去成本

mysql - SQL 仅选择列上具有最大值的行

mysql - 对此最好的查询是什么?

.net - 当数据库离线时,您如何管理您的应用程序?

sql-server - 如何从 SQL Server 存储过程返回值并在 Access VBA 中使用它们

sql - 转让认购报告服务

sql - exec(@sql) 的返回值

mysql - Left 函数遗漏字符

c# - ASP.net 为什么这些查询没有执行?