0

MS SQL に 3 つの列を持つテーブル 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 ごとに費やされた平均時間を計算したいと考えています。一列に

4

2 に答える 2

1

しかし、開始時刻と終了時刻を取得できるように、一意の IP 行の最初と最後のエントリを見つけるにはどうすればよいでしょうか? 立ち往生しています。

Select IP, MIN([Timestamp]) as MinTime,  Max([Timestamp]) as MaxTime
from your table
group by IP
于 2010-05-25T18:17:54.050 に答える
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 sql を使用: 最初の行の e.TimeStamp - s.[SessionGuid] を修正

e.TimeStamp - s.[ TimeStamp ] である必要があります

そして最後のサブクエリで:

マイムスタンプ)

する必要があります

Min(タイムスタンプ)

SessionGuid ごとに 1 つの (開始) 行のみのケースを処理するために以下を編集しました...

 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]) 
于 2010-05-25T18:41:23.130 に答える