Netezza SQL 用于从连续记录中收集值
Netezza SQL for collecting values from Successive records
我在 Netezza 的 web_event table 中有一些数据,格式如下。
**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*
这是我的来源table。
我正在尝试使用 web_event table 并创建另一个 table,如下所示。
我正在努力
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 table 像下面这样加载。
在下面的 table 中,我想根据 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*
您可以在 SQL 查询中执行此操作,只需使用 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;
我在 Netezza 的 web_event table 中有一些数据,格式如下。
**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*
这是我的来源table。
我正在尝试使用 web_event table 并创建另一个 table,如下所示。
我正在努力
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 table 像下面这样加载。
在下面的 table 中,我想根据 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*
您可以在 SQL 查询中执行此操作,只需使用 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;