选择sql中时差最小的10行
我正在使用SQLServer2005 您好,我有一个Users表,其中包含userID和registrationDate。我想选择两个注册日期之间的最短时间段,第一个日期是x,另一行是x+10行。我不介意游标,因为我将偶尔运行此查询 我将再次解释,我需要在10个用户注册之间的最短时间,以了解每个特定时间的注册边界有多高选择sql中时差最小的10行,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在使用SQLServer2005 您好,我有一个Users表,其中包含userID和registrationDate。我想选择两个注册日期之间的最短时间段,第一个日期是x,另一行是x+10行。我不介意游标,因为我将偶尔运行此查询 我将再次解释,我需要在10个用户注册之间的最短时间,以了解每个特定时间的注册边界有多高 谢谢如果您使用的是SQL Server 2005或更新版本,请尝试此查询: WITH T1 AS ( SELECT userID, reg
谢谢如果您使用的是SQL Server 2005或更新版本,请尝试此查询:
WITH T1 AS (
SELECT
userID,
registrationDate,
ROW_NUMBER() OVER (ORDER BY registrationDate) AS rn
FROM Users
), T3 AS (
SELECT
T1.registrationDate AS interval_start,
T2.registrationDate AS interval_end,
T1.registrationDate - T2.registrationDate AS diff
FROM T1
JOIN T1 T2
ON T1.rn = T2.rn + 5
)
SELECT TOP 1 interval_start, interval_end
FROM T3
ORDER BY diff
你说得对,你的答案正是我想要的,但由于英语是我的第三种口语,我无法正确地书写和提问。1900-01-01 00:04:00,,,这是我得到的答案。当最低注册日期为2008年,最高注册日期为今天时……您可以轻松修改查询,查看峰值出现的时间。查看我的更新查询。我的错,,,现在我知道“1900-01-01 00:04:00”代表什么了