【问题标题】:Need to fetch count of live instances per min from database需要每分钟从数据库中获取活动实例的数量
【发布时间】:2014-03-24 03:00:22
【问题描述】:

我有数据库

  • 表名PerformanceUserData
  • 列:开始日期为日期时间,结束日期为日期时间,IP 地址,实例

对于每一行的实例值为 1。

样本数据是

2/21/2014 10:39:17 AM   2/21/2014 10:40:24 AM   192.168.1.51    1
2/21/2014 10:40:24 AM   2/21/2014 10:41:57 AM   192.168.1.51    1
2/21/2014 3:51:29 PM    2/21/2014 3:51:30 PM    192.168.1.12    1
2/21/2014 3:51:30 PM    2/21/2014 3:52:06 PM    192.168.1.12    1
2/21/2014 3:52:06 PM    2/21/2014 3:52:39 PM    192.168.1.12    1
2/21/2014 3:52:39 PM    2/21/2014 3:53:12 PM    192.168.1.12    1

查询的输入是开始日期和结束日期

如果开始日期是 2014 年 2 月 21 日下午 3:51:30,结束日期是 2014 年 2 月 21 日下午 5:51:30 我需要从下午 3.15 到下午 3.16 的每分钟数据

数据需求

Time               number of instances
3.51 to 3.52       2
3.52 to 3.53       2

【问题讨论】:

  • 你试过什么?
  • 我们已经建立目录并将所有条目推入其中,然后加入其他表,但这将花费大量时间

标签: sql sql-server


【解决方案1】:

@gordon 是对的。我对采样日期很困惑, 试试这样的,

 Declare @PerformanceUserData Table(StartDate datetime, enddate datetime,ip varchar(20), instance int)
 insert into @PerformanceUserData
select  '2/21/2014 10:39:17 AM','2/21/2014 10:40:24 AM','192.168.1.51', 1 union all
select  '2/21/2014 10:40:24 AM','2/21/2014 10:41:57 AM','192.168.1.51',1  union all
select  '2/21/2014 3:51:29 PM','2/21/2014 3:51:30 PM','192.168.1.12',1  union all
select  '2/21/2014 3:51:30 PM','2/21/2014 3:52:06 PM','192.168.1.12',1  union all
select  '2/21/2014 3:52:06 PM','2/21/2014 3:52:39 PM','192.168.1.12',1  union all
select  '2/21/2014 3:52:39 PM','2/21/2014 3:53:12 PM','192.168.1.12',1
--select * from @PerformanceUserData
Declare @startdate datetime='2/21/2014 3:51:30 PM'
Declare @enddate datetime='2/21/2014 5:51:30 PM'
Declare @t Table(dates datetime, rn int)
;with cte  as
(
select @startdate dates,
1 rn
union all
select DATEADD(minute,1,dates),rn+1 from cte  where dates<@enddate 
)

insert into @t
select * from cte option(maxrecursion 0)

select a.dates,b.dates
,(select count(*) from @PerformanceUserData where StartDate 
between a.dates and b.dates)[number of instances]
 from @t a inner join @t b on b.rn-a.rn=1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 2022-12-17
    • 2016-08-31
    相关资源
    最近更新 更多