我在以下格式的netezza的web_event表中有一些數據。Netezza排除特定記錄
vstr_id | sessn_id | sessn_ts | wbpg_nm
V1 | V1S1 | 02-02-2015 09:20:00 | /home/login
V1 | V1S1 | 02-02-2015 09:22:00 | -1
V1 | V1S1 | 02-02-2015 09:30:00 | /home/contacts
V1 | V1S1 | 02-02-2015 09:32:00 | -1
V1 | V1S1 | 02-02-2015 09:50:00 | /home/search
V1 | V1S1 | 02-02-2015 09:55:00 | -1
V2 | V2S1 | 02-02-2015 09:10:00 | /home
V2 | V2S1 | 02-02-2015 09:15:00 | /home/apps
V2 | V2S2 | 02-02-2015 09:20:00 | /home/news
V2 | V2S2 | 02-02-2015 09:23:00 | /home/news/internal
這是我的源表。
我想使用該web_event表並創建像下面這樣的另一個表。
我想要像下面那樣加載sessn_durtn表和time_on_pg表。
1)time_on_page列:它是當前頁面和下一頁面加載之間的時間差,如果沒有其他事件或頁面加載,則會話的最後一頁可以有0秒。它可以用幾分鐘或幾秒來表示。
Insert into time_on_pg (select VSTR_ID,
SESSN_ID,
sessn_ts,
WBPG_NM,
????? as time_on_page
from web_event)
vstr_id | sessn_id | sessn_ts | wbpg_nm | wanted_time_on_page | currently_known_time_on_page
V1 | V1S1 | 02-02-2015 09:20:00 | /home/login | 10mins | 2mins
V1 | V1S1 | 02-02-2015 09:22:00 | -1 | | 8mins
V1 | V1S1 | 02-02-2015 09:30:00 | /home/contacts | 20mins | 2mins
V1 | V1S1 | 02-02-2015 09:32:00 | -1 | | 18mins
V1 | V1S1 | 02-02-2015 09:50:00 | /home/search | 5mins | 5mins
V1 | V1S1 | 02-02-2015 09:55:00 | -1 | |
V2 | V2S1 | 02-02-2015 09:10:00 | /home | 5mins | 5mins
V2 | V2S1 | 02-02-2015 09:15:00 | /home/apps | |
V2 | V2S2 | 02-02-2015 09:20:00 | /home/news | 3mins | 3mins
V2 | V2S2 | 02-02-2015 09:23:00 | /home/news/internal | |
我們怎樣才能在Netezza公司或任何SQL查詢做到這一點?
我必須計算使用
SELECT vstr_id,
sessn_id,
sessn_ts,
wbpg_nm,
???????? AS wanted_time_on_page,
extract(epoch from (lag(event_ts) over (partition by vstr_id, sessn_id order by event_ts DESC) - event_ts)) AS currently_known_time_on_page
from web_event;
wanted_time_on_page和currently_known_time_on_page之間的主要差別的currently_known_time_on_page的邏輯被消除「-1」的網頁而計算除了最後一頁的時間差。
Arleigh您提供的結果集只保留1'-1'結果在您的答案中有3個在他的結果集和起始表 – Matt
沒有意識到你也想要。更新了代碼以包含它。謝謝。 –
我想弄清楚爲什麼瘋狂的長篇文章,然後我意識到我沒有拿起最後的-1,我在外部應用中錯過了,我會調整外部應用,但我只是把一個CTE您可能想要查看使用2行號2個自引用並在您的ROW_NUMBER函數中調整PARTITION BY可以幫助您更快地獲得所需的結果。 – Matt