花在多行SQL服务器上的平均时间?

时间:2010-05-25 18:14:06

标签: sql-server tsql average

我在MS SQL中有一个包含3个cols的表tblSequence: ID,IP,[时间戳]

内容可能如下所示:

ID          IP              [Timestamp]
--------------------------------------------------
4347        62.107.95.103   2010-05-24 09:27:50.470
4346        62.107.95.103   2010-05-24 09:27:45.547
4345        62.107.95.103   2010-05-24 09:27:36.940
4344        62.107.95.103   2010-05-24 09:27:29.347
4343        62.107.95.103   2010-05-24 09:27:12.080

ID是唯一的,可以有n个IP。

想要计算每个IP花费的平均时间。在一行中

知道你可以这样做:

SELECT CAST(AVG(CAST(MyTable.MyDateTimeFinish - 
         MyTable.MyDateTimeStart AS float)) AS datetime)

但是我怎么能找到我唯一的IP行的第一个和最后一个条目,这样我才能有一个开始和结束的时间?我卡住了。

想要计算每个IP花费的平均时间。在一行中

2 个答案:

答案 0 :(得分:1)

  

但是我怎么找到第一个呢   以及我唯一的IP行的最后一个条目   我可以有一个开始和结束时间?   我卡住了。

Select IP, MIN([Timestamp]) as MinTime,  Max([Timestamp]) as MaxTime
from your table
group by IP

答案 1 :(得分:1)

假设您有一个可用于关联行的属性(列)(如seesionID),那么

  Select s.SessionId, e.TimeStamp - s.Timestamp
  From tblSequence s
    Join tblSequence E
        On e.SessionId = s.Sessionid
            And e.TimeStamp = (Select Max(TimeStamp)
                               From tblSequence 
                               Where Sessionid = s.Sessionid)
  Where s.TimeStamp = (Select MinmeStamp)
                       From tblSequence 
                       Where Sessionid = s.Sessionid)

使用评论中的yr:修复 在第一行,e.TimeStamp - s。[SessionGuid]

应为e.TimeStamp - s。[ TimeStamp ]

并在最后一个子查询中:

<强> MimeStamp

应该是

<强> 敏(时间戳)

以下编辑处理每个SessionGuid只有一个(开始)行的情况......

 Select s.[SessionGuid], 
      Coalesce(e.TimeStamp], getdate()) - s.[TimeStamp
 From tblSequence s 
        Left Join tblSequence E 
           On e.[SessionGuid] = s.[SessionGuid] 
              And e.TimeStamp = (Select Max(TimeStamp) 
                                 From tblSequence 
                                 Where [SessionGuid] = s.[SessionGuid]) 
    Where s.TimeStamp = (Select Min(TimeStamp) 
                         From tblSequence 
                         Where [SessionGuid] = s.[SessionGuid])