sql-server - 需要查询 - 确定每分钟的行数

标签 sql-server tsql

为了让事情变得非常简单,假设我有一个 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/

相关文章:

sql - 在 SQL 中添加计算列

SQL Server LCK_M_S 仅在生产中发生

sql-server - SQL Server 2005 - 如何比较字段值,如果不同则返回计数,每次出现

sql - 在 sql join 中不包括空值

sql-server - SQL 返回唯一数据

sql-server - TSQL - 连接表的正确顺序是什么?

sql - 使用字符串变量对表的每一行执行存储过程

php - mssql_execute 失败, "stored procedure execution failed"

sql - 部分更新命令

sql-server - 带有额外列的批量插入