SQL Server:获取彼此相隔10分钟的所有行

SQL Server:获取彼此相隔10分钟的所有行,sql,sql-server,performance,Sql,Sql Server,Performance,嗨,我有一个SQL问题无法解决。我不确定这是否是一个可以在基于规则集的操作中解决的问题 下面是: 我有一个表,其中每一行都是文档的视图。我需要找到行之间的日期为10分钟的行。假设一个人在10分钟内访问一个文档13次,在10秒钟内访问10次,我需要找到这些行和执行此操作的人 换句话说,如果某人以Y Min/s的速度访问了X多个文档,请显示此人访问的文档 最好不要对数据进行聚合,而只使用一个类似的行数或计数*的数据 以下是一个例子: SQL Server中最简单的方法可能是使用带适当参数的lead:

嗨,我有一个SQL问题无法解决。我不确定这是否是一个可以在基于规则集的操作中解决的问题

下面是:

我有一个表,其中每一行都是文档的视图。我需要找到行之间的日期为10分钟的行。假设一个人在10分钟内访问一个文档13次,在10秒钟内访问10次,我需要找到这些行和执行此操作的人

换句话说,如果某人以Y Min/s的速度访问了X多个文档,请显示此人访问的文档

最好不要对数据进行聚合,而只使用一个类似的行数或计数*的数据

以下是一个例子:


SQL Server中最简单的方法可能是使用带适当参数的lead:

select t.*
from (select t.*,
             lead(happened, 12) over (partition by userkey, document order b happened) as next_happened_12
      from t
     ) t
where next_happened_12 < dateadd(minute, 10, happened);
论点是-1


这不会在10分钟内获得所有行。这将需要一个自连接,并且可能非常昂贵。lead应该更加高效,可以利用userkey、document和Occessed上的索引。

Hi Gordon。谢谢但这对我没有帮助,我需要所有的行。如果它需要一个自连接,那就这样吧。用户可以在10分钟内访问多个文档,上述部分不支持该操作。我可以从分区中删除文档列并获得所需的结果吗?