为了让事情变得非常简单,假设我有一个 SQL Server 2008 表,其中有一列具有日期时间数据类型。我想要一个能够生成每分钟间隔的行数的查询。例如,结果如下所示:
7/3/2011 14:00:00 | 1000
7/3/2011 14:01:00 | 1097
7/3/2011 14:02:00 | 569
第一行意味着 1000 行的日期时间值在 7/3/2011 13:59:00 和 7/3/2011 14:00:00 之间。
第二行意味着 1097 行的日期时间值在 7/3/2011 14:00:00 和 7/3/2011 14:01:00 之间。
第三行意味着 569 行的日期时间值在 7/3/2011 14:01:00 和 7/3/2011 14:02:00 之间。
谢谢。
最佳答案
这个:
;WITH CTE_ExampleData as (
select stamp = '07/07/2011 14:00:01'
union select stamp = '07/07/2011 14:00:02'
union select stamp = '07/07/2011 14:00:03'
union select stamp = '07/07/2011 14:01:01'
union select stamp = '07/07/2011 14:01:02'
union select stamp = '07/07/2011 14:01:03'
union select stamp = '07/07/2011 14:01:04'
union select stamp = '07/07/2011 14:02:02'
union select stamp = '07/07/2011 14:02:03'
union select stamp = '07/07/2011 14:02:04'
union select stamp = '07/07/2011 14:02:05'
)
select
stamp = dateadd(mi,datediff(mi,0,stamp) + 1,0),
rows = count(1)
from CTE_ExampleData
group by dateadd(minute,datediff(mi,0,stamp)+1,0)
返回
stamp rows
2011-07-07 14:01:00.000 3
2011-07-07 14:02:00.000 4
2011-07-07 14:03:00.000 4
关于sql-server - 需要查询 - 确定每分钟的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6626157/