Ich habe eine Reihe von Daten, die eine type
Spalte und eine created_at
Zeitspalte hat. Ich habe bereits eine Abfrage, die die relevanten Daten aus der Datenbank zieht, und das sind die Daten, die zurückgegeben werden. Was ich tun möchte, ist irgendwie aggregieren diese Daten so einen zeitlichen Abstand zwischen jedem Fall erhalten, so dass die AusgangsdatenAggregation mehrerer Zeilen mehr als einmal
type | created_at | row_num
-----------------------------------------------------
"ordersPage" | "2015-07-21 11:32:40.568+12" | 1
"getQuote" | "2015-07-21 15:49:47.072+12" | 2
"completeBrief" | "2015-07-23 01:00:15.341+12" | 3
"sendBrief" | "2015-07-24 08:59:42.41+12" | 4
"sendQuote" | "2015-07-24 18:43:15.967+12" | 5
"acceptQuote" | "2015-08-03 04:40:20.573+12" | 6
Die Zeilennummer wird aus der Standardzeilennummer Funktion in Postgres
ROW_NUMBER() OVER (ORDER BY created_at ASC) AS row_num
zurück aussehen könnte so etwas wie diese
type_1 | type_2 | time_distance
--------------------------------------------------------
"ordersPage" | "getQuote" | 123423.3423
"getQuote" | "completeBrief" | 123423.3423
"completeBrief" | "sendBrief" | 123423.3423
"sendBrief" | "sendQuote" | 123423.3423
"sendQuote" | "acceptQuote" | 123423.3423
Der zeitliche Abstand wäre ein Schwimmer in Millisekunden sein, in anderen Abfragen ich habe so etwas wie dies mit Zeitdifferenzen erhalten .
EXTRACT(EPOCH FROM (MAX(events.created_at) - MIN(events.created_at)))
Aber dieses Mal, dass ich es in der Reihenfolge der row_num von Veranstaltungen für jedes Paar müssen also muss ich das Aggregat für (1,2), (2,3), (3,4)...
Irgendwelche Ideen, wenn dies möglich ist? Auch muss nicht genau sein, kann ich mit Duplikaten umgehen, und mit type_1
und type_2
Spalten eine vorhandene Zeile in einer anderen Reihenfolge zurückgeben. Ich brauche nur einen Weg, diese Werte zumindest zu erreichen.
'JOIN' die Daten wieder in sich auf' t1. row_num = t2.row_num + 1', um jedes Ereignispaar in der sequentiellen Reihenfolge zu erhalten. – Serg
Danke, perfekt. –