【发布时间】:2023-04-07 09:07:01
【问题描述】:
我希望确定在任何给定时间登录到服务器的用户数量。我有开始日期时间和结束日期时间的用户级别数据。
表 1
user_ID start_time end_time
----------------------------------------------------------
1XbC34 03/06/2016 00:00:06 03/06/2016 00:23:26
2re56 03/06/2016 00:01:07 03/06/2016 00:32:40
sdf4ser1w 03/06/2016 00:02:10 03/06/2016 00:02:37
sf54fw3fa 03/06/2016 00:02:11 03/06/2016 00:25:42
fa31f1asf1 03/06/2016 00:04:17 03/06/2016 00:05:43
gvf5af13a 03/06/2016 00:04:18 03/06/2016 00:05:30
f2s14fs3afd1a 03/06/2016 00:04:33 03/06/2016 00:05:07
sdf1a3f1d3sa 03/06/2016 00:04:34 03/06/2016 00:23:02
我正在寻找的输出是
DateTime Logged in accumulative (between Start and end)
--------------------------------------------
03/06/2016 00:00:06, 1
03/06/2016 00:01:07, 2
03/06/2016 00:02:10, 3
03/06/2016 00:02:11, 4
03/06/2016 00:04:17, 4
等等……
我最初的想法是创建一个临时表,该表将包含所有日期/时间以加入表 1,如下所示。
select dt.Start_time
into #cal
from table1 dt
where dt.start_time between '2016-06-03 00:00:00' AND '2016-06-03 23:59:59'
group by dt.start_time
接下来是创建连接。
Select dt.Start_Time, count(*)
from table1 dt
left Join #cal C on C.start_time between dt.start_time AND dt.end_time
where dt.start_time between '2016-06-03 00:00:00' AND '2016-06-03 23:59:59'
group by dt.start_time
非常感谢任何帮助。
谢谢,
标记
【问题讨论】:
-
我假设“Microsoft SQL”实际上是指“Microsoft SQL Server”并为此添加了相关标签(它可以也意味着 Microsoft Access 中的 SQL - 但这似乎不太可能)。请始终为您实际使用的 RDBMS 提供相关且有用的标签 -
sql只是查询语言,被许多数据库使用,因此并不是很有帮助...
标签: sql-server datetime join between cumulative-sum