Pregunta

Estoy rastreando vistas de página dentro de módulos usando la siguiente tabla:

id | page_id | user_id | session_id | created

Cada página es exclusiva de un determinado módulo; así que la página 14 solo existe en el módulo 2, por ejemplo.

Estoy tratando de escribir una consulta que me informa cuándo comenzó una sesión de visualización (GROUP BY session_id) para un módulo en particular, pero estoy teniendo problemas con mi pedido. Básicamente, para esa sesión agrupada, quiero devolver el primer 'creado' (la hora de inicio de la sesión de visualización) y el último page_id (qué tan lejos llegaron dentro del módulo).

¿Cuál es la mejor manera de lograr esto?

¿Fue útil?

Solución

Creo que necesitará utilizar subconsultas en la selección:

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

Otros consejos

SELECT  MIN(created), MAX(page_id)
FROM    modules
GROUP BY
        session_id
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top