一連の(IP varchar(15)、DateTime datetime2)値を持つテーブルがあります。各行は、ユーザーが作成したHTTP要求に対応しています。私はにこれらの行にセッション番号を割り当てたいと思う。異なるIPアドレスはセッション番号が異なります。最後の要求が30分より古い場合は同じIPに新しいセッション番号を割り当てる必要があります。。SQL Server:row_numberはタイムアウトで分割されます
IP, DateTime, SessionNumber, RequestNumber
1.1.1.1, 2012-01-01 00:01, 1, 1
1.1.1.1, 2012-01-01 00:02, 1, 2
1.1.1.1, 2012-01-01 00:03, 1, 3
1.1.1.2, 2012-01-01 00:04, 2, 1 --different IP => new session number
1.1.1.2, 2012-01-01 00:05, 2, 2
1.1.1.2, 2012-01-01 00:40, 3, 1 --same IP, but last request 35min ago (> 30min)
列1と2は入力です.3と4は望ましい出力です。この表は2人のユーザーを示しています。
基礎となるテーブルが本当に大きいので、これはどのように効率的に解決できますか?私はデータ(1つまたは2つ)上のパスの小さな一定量を好むだろう。
どのバージョンのSQL Serverですか? 2012年には、新しい 'OVER'節機能が役立ちます。 –
はい、SQL Server 2012です。 – usr