2016-04-26 2 views
0

У меня есть некоторые данные в таблице web_event Netezza в этом ниже формате.Netezza SQL для сбора значений из последовательных записей

**vstr_id | sessn_id | event_ts | wbpg_nm** 
*V1  | V1S1  | 02-02-2015 09:30:00 | /home/contacts* 
*V1  | V1S1  | 02-02-2015 09:20:00 | /home/login* 
*V1  | V1S1  | 02-02-2015 09:50:00 | /home/search* 
*V2  | V2S1  | 02-02-2015 09:10:00 | /home* 
*V2  | V2S2  | 02-02-2015 09:20:00 | /home/news* 

Это моя исходная таблица.

Я пытаюсь использовать эту таблицу web_event и создавать другую таблицу, как показано ниже.

Я пытаюсь сделать

Insert into page_path (select VSTR_ID, 
      SESSN_ID, 
      EVENT_ts, 
      *?* as PREV_WBPG_NM, 
      WBPG_NM, 
      *?* as NXT_WBPG_NM, 
      from web_event) 

Я хочу, чтобы таблица page_path быть загружены, как показано ниже.

В этой ниже таблице я хочу загрузить данные для предыдущих столбцов страницы и следующей страницы на основе отсортированного порядка столбца event_ts.

Как мы можем это сделать в Netezza или любом SQL-запросе?

**vstr_id | sessn_id | event_ts | previous_wbpg_nm | wbpg_nm | next_wbpg_nm** 
*V1  | V1S1  | 02-02-2015 09:30:00 | /home/login | /home/contacts | /home/search* 
*V1  | V1S1  | 02-02-2015 09:20:00 | null | /home/login | /home/contacts* 
*V1  | V1S1  | 02-02-2015 09:50:00 | /home/contacts | /home/search | null * 
*V2  | V2S1  | 02-02-2015 09:10:00 | null | /home/ | null* 
*V2  | V2S2  | 02-02-2015 09:20:00 | null | /home/news | null* 

ответ

2

Вы можете сделать это в SQL Query только с помощью lag() и lead():

select vstr_id, sessn_id, event_ts, 
     lag(wbpg_nm) over (partition by vstr_id, sessn_id order by event_ts) as prev_wbpg_nm, 
     wbpg_nm, 
     lead(wbpg_nm) over (partition by vstr_id, sessn_id order by event_ts) as next_wbpg_nm 
from page_path; 
+0

Спасибо большое за помощь! – RAJESH

+0

Привет, Гордон, любая идея об этом http://stackoverflow.com/questions/36898926/session-duration-and-time-on-page-calculation-using-sql – RAJESH

Смежные вопросы