Domanda

Sto monitorando le visualizzazioni di pagina all'interno dei moduli utilizzando la seguente tabella:

id | page_id | user_id | session_id | created

Ogni pagina è unica per un determinato modulo; quindi la pagina 14 esiste solo nel modulo 2, per esempio.

Sto provando a scrivere una query che mi dice quando è iniziata una sessione di visualizzazione (GROUP BY session_id) per un modulo particolare, ma sto riscontrando problemi con il mio ordine. Fondamentalmente, per quella sessione raggruppata, voglio restituire il primo "creato" (l'ora di inizio della sessione di visualizzazione) e l'ultimo page_id (fino a che punto sono arrivati ??all'interno del modulo).

Qual è il modo migliore per raggiungere questo obiettivo?

È stato utile?

Soluzione

Penso che dovrai utilizzare le sottoquery nella selezione:

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

Altri suggerimenti

SELECT  MIN(created), MAX(page_id)
FROM    modules
GROUP BY
        session_id
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top