2017-11-14 3 views
0

Ich habe eine Tabelle, die start_time, end_time (beide Zeitstempel) für eine ID hat. Die Sitzungen können zusammenhängend sein und über mehrere Zeilen hinweg angezeigt werden, aber jede Sitzung kann zu zwei zusätzlichen Spalten gehören. Ich versuche, die Sitzungslänge für einen einzelnen Tag für eine bestimmte Reihe von Spalten zu finden.Sitzungen über mehrere Zeilen

Eingabetabelle:

ID Start     End   Website Webpage  
U1 11/02/17 10:27:14 11/02/17 10:27:20  W1 P1   
U1 11/02/17 10:27:40 11/02/17 10:27:51  W1 P1   
U2 11/02/17 10:27:20 11/02/17 10:27:38  W2 P2   
U2 11/02/17 10:41:20 11/02/17 10:41:50  W3 P3   
U3 11/02/17 10:27:20 11/02/17 10:27:51  W2 P2   
U1 11/04/17 9:27:30 11/04/17 9:28:30  W1 P1   

Wie die unten gewünschte Ausgabe erhalten?

ID Website Webpage  time_diff start_time 
U1 W1   P1   17   11/02/17 
U2 W2   P2   18   11/02/17 
U2 W3   P3   30   11/02/17 
U3 W2   P2   31   11/02/17 
U1 W1   P1   60   11/04/17 
+0

Danke, dass Sie uns schön gesagt haben, was Sie tun möchten, zeigen Sie uns jetzt, was Sie getan haben? Wo ist der Code, den du ausprobiert hast? – Ibo

+0

MAX, MIN Funktionen mit GROUP BY auf ID, Website, Webseite sollte den Trick machen. Sie sollten versuchen, das zu schreiben, es ist einfach genug. – user6542823

+0

Eine Korrektur - die Spalte time_diff existiert nicht. Ich berechne das im laufenden Betrieb. Korrektur der Eingabetabelle vorgenommen, um dies widerzuspiegeln. – DigiEnthu

Antwort

0

Vergessen Sie, die Antwort dafür zu veröffentlichen. Diese Abfrage hat funktioniert. Danke allen für die Hilfe.

SELECT ID, Website, Webpage, SUM(DATEDIFF(second,start,end)) 
AS time_diff, DATE(Start) as start_time 
from web_sessions_table 
GROUP BY 
start_time, ID, 
Webpage, 
Website