Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 日期时间列表之间的时间跨度细分_Sql Server 2005_Datetime_Aggregation - Fatal编程技术网

Sql server 2005 日期时间列表之间的时间跨度细分

Sql server 2005 日期时间列表之间的时间跨度细分,sql-server-2005,datetime,aggregation,Sql Server 2005,Datetime,Aggregation,我有一个SQLServer2005数据库表,它有一个datetime列。每次服务处理传入请求时,我都在该表中写入一个条目 我想得到的是连续条目之间时间跨度的细分 如果数据为: 2009-10-30 04:06:57.117 2009-10-30 03:52:44.383 2009-10-30 03:42:00.990 2009-10-30 03:41:59.160 2009-10-30 03:17:07.563 我想: < 10 minutes: 1 10 - 20 minutes: 2

我有一个SQLServer2005数据库表,它有一个datetime列。每次服务处理传入请求时,我都在该表中写入一个条目

我想得到的是连续条目之间时间跨度的细分

如果数据为:

2009-10-30 04:06:57.117
2009-10-30 03:52:44.383
2009-10-30 03:42:00.990
2009-10-30 03:41:59.160
2009-10-30 03:17:07.563
我想:

< 10 minutes: 1
10 - 20 minutes: 2
20 - 30 minutes: 1
细分分组并不重要。我只是想了解一下参赛作品之间的间隔时间。事实上,我最终将使用它来确定99%的条目至少与另一个条目一样接近的时间跨度

非常感谢,,
詹姆斯有这样一张桌子:

CREATE TABLE dbo.foo(bar DATETIME);
那么也许这个,

WITH t AS
(
  SELECT bar, rn = ROW_NUMBER() OVER (ORDER BY bar)
  FROM dbo.foo
),
x AS
(
  SELECT d = DATEDIFF(MINUTE, t1.bar, t2.bar)
  FROM t AS t1
  INNER JOIN t AS t2
  ON t1.rn = t2.rn - 1
),
y AS
(
  SELECT blat = CASE WHEN d < 10 THEN '< 10 '
    WHEN d BETWEEN 10 AND 20 THEN '10 - 20 '
    WHEN d BETWEEN 20 AND 30 THEN '20 - 30 '
    ELSE '> 30 ' END + ' minutes:'
  FROM x
)
SELECT blat, COUNT(*) FROM y GROUP BY blat;
很明显,你可以用更少的CTE来计算,但我更喜欢只需要写尽可能少的计算次数