SQL Server 2017 - Как выполнять вычисления или назначать значения для сбрасываемого раздела? - PullRequest
0 голосов
/ 17 апреля 2020

Я работаю с информацией из журнала сервера и выстраиваю путешествие пользователя по дням следующим образом:

SELECT 
[IP_Address], [Date_Time], CONVERT(date, Date_Time) AS Date
*ROW_NUMBER() OVER (PARTITION BY IP_Address, CONVERT(date, Date_Time)ORDER BY IP_Address, Date_Time) AS Journey_Path*

Возвращенный результат выглядит примерно так:

Result Output Sample

Я хотел бы указать столбец page_type для каждой строки с Landing_Page, Journey_Page и Exit_Page. Посадка - первая страница, выход - последняя, ​​а путешествие - средние страницы. Это изменится, поскольку некоторые поездки пользователей могут привести только к одному или двум посещениям страницы. В случае длины поездки 1 это будет Landing_Page, а в случае длины поездки 2 - Landing_Page, за которой следует Exit_Page. В идеале я также хотел бы взять разницу во времени в секундах между временными метками каждой траектории путешествия (когда это применимо) для расчета времени на странице.

Я смотрел на оконные функции lead и lag но я не уверен, как структурировать это таким образом, чтобы вычисления сбрасывались при каждом разделении пути пользователя. В настоящее время он не распознает каждое новое путешествие и просто бежит по каждому ряду.

...