Gor*_*yII 3 sql sql-server sql-server-2000
我有一个连续的时间数据集,我想用sql将其分解为15分钟的块.
我不想创建一个新表,以便能够帮助它.
即
时间,计数
9点15分,1
09:30,3
9时45分,0
10:00,2
10:15,3
.....
有谁知道我怎么能做到这一点.我认为使用类似于以下的选择:
SELECT [对"MyDate"的某种数据操作]
,COUNT(ID)
FROM MyTable
GROUP BY [对"MyDate"的某种数据操作]
仔细使用dateadd和datediff,就可以实现.我的解决方案将时间缩短了.
第一部分计算行的日期和纪元(0)之间的分钟数,并在其上执行mod 15,给出行的日期和最近的15分钟间隔之间的差异:
select -1 * datediff(minute, 0, mydate) % 15
from mytable
Run Code Online (Sandbox Code Playgroud)
接下来,我们只需要处理分钟,所以我们使用了从SQL Server Magazine 2007年2月(Itzik Ben-Gan的日期时间计算)中学到的日期部分剥离技术:
select dateadd(minute, datediff(minute, 0, mydate), 0)
from mytable
Run Code Online (Sandbox Code Playgroud)
然后,我们将差异添加到行的日期列和组和计数瞧!
select dateadd(minute, -1 * datediff(minute, 0, mydate) % 15, dateadd(minute, datediff(minute, 0, mydate), 0)), count(ID)
from mytable
group by dateadd(minute, -1 * datediff(minute, 0, mydate) % 15, dateadd(minute, datediff(minute, 0, mydate), 0))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2935 次 |
| 最近记录: |