我有一个数据集,看起来像这样:相对ROW_NUMBER()在PostgreSQL的
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
字段进行排序。
select
sessionid,
url,
created,
row_number() over(partition by sessionid order by created) as rownum
from
<tablename>
order by
sessionid,
created
我不知道如何获取相对于某一页负值行号:
我使用下面的查询产生的rownum
列。这是必需的,所以我可以绘制页面blah
前后访问的页面种类。当然,可以在同一个会话中对同一页面blah
进行多次访问。在这种情况下,应将第一次访问视为第零次访问(newrownum
列中的值为0)。
非常感谢您提供了一个简单的答案,它非常有意义。工作就像一个魅力:)。 – Patthebug