计算SQL Server中"重叠"行的数量

Ken*_*enD 6 sql-server

我被要求查看一个记录用户登录和注销活动的数据库 - 这是一个用于登录时间的列,然后是另一个用于记录注销的列,两者都是OLE格式.我需要汇总一些有关用户并发性的信息 - 即每天在同一时间登录的用户数量.

有谁知道如何在SQL中执行此操作?我真的不需要知道细节,只需要知道每天的计数.

提前致谢.

Joh*_*nFx 1

我认为这会起作用。

Select C.Day, Max(C.Concurrency) as MostConcurrentUsersByDay
FROM 
(
   SELECT convert(varchar(10),L1.StartTime,101) as day, count(*) as Concurrency
   FROM login_table L1
   INNER JOIN login_table L2 
      ON (L2.StartTime>=L1.StartTime AND L2.StartTime<=L1.EndTime) OR
         (L2.EndTime>=L1.StartTime AND L2.EndTime<=L1.EndTime)
    WHERE (L1.EndTime is not null) and L2.EndTime Is not null)  AND (L1.ID<>L2.ID)
    GROUP BY convert(varchar(10),L1.StartTime,101)
) as C    
Group BY C.Day
Run Code Online (Sandbox Code Playgroud)