Frage

Ich bin Tracking Seitenaufrufe innerhalb von Modulen anhand der folgenden Tabelle:

id | page_id | user_id | session_id | created

Jede Seite ist einzigartig für ein bestimmtes Modul; so Seite 14 gibt es nur in Modul 2, zum Beispiel.

Ich versuche, eine Abfrage zu schreiben, die mir sagt, wenn eine Videositzung (GROUP BY Sitzungs_ID) begann für ein bestimmtes Modul, aber ich habe Probleme mit meiner Bestellung. Grundsätzlich für die gruppierte Sitzung, ich möchte, dass die früheste zurückzukehren ‚erstellt‘ (die Startzeit der Betrachtungssitzung) und die neueste page_id (wie weit sie innerhalb des Moduls vor).

Was ist der beste Weg, dies zu erreichen?

War es hilfreich?

Lösung

Ich denke, Sie werden Unterabfragen in der Auswahl nutzen müssen:

SELECT a.session_id, MIN(a.created) as start_time, 
b.page_id AS last_page, b.end_time
FROM table a 
INNER JOIN 
   (SELECT b.session_id, MAX(b.created) as end_time, MAX(b.page_id) 
   FROM table b GROUP BY b.session_id) 
ON a.session_id = b.session_id GROUP BY a.session_id

Andere Tipps

SELECT  MIN(created), MAX(page_id)
FROM    modules
GROUP BY
        session_id
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top