Ich habe eine Datenmenge, die wie folgt aussieht:Relative row_number() in 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
und ich möchte eine Ausgabe haben, die wie folgt aussieht:
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
Mit anderen Worten, ich würde gerne sehen, wo eine session
eine bestimmte Seite blah
besucht und ich möchte die Seiten vor und nach dieser bestimmten Seite besucht sehen. Beachten Sie, dass die Seiten in session
nach dem Feld created
bestellt werden.
I erzeugt die rownum
Spalte die folgende Abfrage verwenden:
select
sessionid,
url,
created,
row_number() over(partition by sessionid order by created) as rownum
from
<tablename>
order by
sessionid,
created
Ich bin nicht sicher, wie die Zeilennummern zu erhalten, die negative Werte in Bezug auf eine bestimmte Seite sind. Dies ist erforderlich, damit ich die Art der Seiten grafisch darstellen kann, die vor und nach der Seite blah
besucht werden. Natürlich kann es mehrere Besuche auf derselben Seite blah
in derselben Sitzung geben. In diesem Fall sollte der erste Besuch als der nullte Besuch behandelt werden (mit einem Wert 0 in der Spalte newrownum
).
Vielen Dank für eine einfache Antwort, es macht sehr viel Sinn. Lief wie am Schnürchen :). – Patthebug