SQL Server:row_число, разделенное по времени ожидания

У меня есть таблица с серией значений (IP varchar(15), DateTime datetime2). Каждая строка соответствует HTTP-запросу, сделанному пользователем. Я хочу присвоить этим строкам номера сеансов . Разные IP-адреса имеют разные номера сеансов. Тому же IP должен быть назначен новый номер сеанса , если последний запрос старше 30 минут . Вот пример вывода:

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 — желаемые выходные данные. В таблице показаны два пользователя.

Поскольку базовая таблица действительно велика, как можно решить эту проблему эффективно ? Я бы предпочел небольшое постоянное количество проходов по данным (один или два).

5
задан Troy Alford 22 April 2013 в 21:42
поделиться