我在以下格式的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