【发布时间】:2016-12-02 21:51:12
【问题描述】:
我有一个如下所示的数据集:
SessionID URL created rownum
abc www.google.com/page1 2016-08-01 1
abc www.google.com/page2 2016-08-02 2
abc www.google.com/blah 2016-08-03 3
abc www.google.com/page3 2016-08-04 4
abc www.google.com/page4 2016-08-05 5
我想要一个如下所示的输出:
SessionID URL created rownum newrownum
abc www.google.com/page1 2016-08-01 1 -2
abc www.google.com/page2 2016-08-02 2 -1
abc www.google.com/blah 2016-08-03 3 0
abc www.google.com/page3 2016-08-04 4 1
abc www.google.com/page4 2016-08-05 5 2
换句话说,我想查看session 访问特定页面blah 的位置,并且我想查看在此特定页面之前和之后访问的页面。请注意,session 中的页面是按照 created 字段排序的。
我使用以下查询生成了rownum 列:
select
sessionid,
url,
created,
row_number() over(partition by sessionid order by created) as rownum
from
<tablename>
order by
sessionid,
created
我不确定如何获取对于某个页面为负值的行号。这是必需的,因此我可以绘制在页面blah 之前和之后访问的页面类型。当然,同一会话中可以有多次访问同一页面blah。在这种情况下,应将第一次访问视为第零次访问(newrownum 列中的值为 0)。
【问题讨论】:
标签: sql postgresql amazon-redshift