문제

다음 표를 사용하여 모듈 내에서 페이지보기를 추적하고 있습니다.

id | page_id | user_id | session_id | created

모든 페이지는 특정 모듈에 고유합니다. 예를 들어 14 페이지는 모듈 2에만 존재합니다.

시청 세션이 특정 모듈에 대한 시청 세션 (Session_ID에 의해 그룹)이 시작되었을 때 알려주는 쿼리를 작성하려고하지만 주문에 어려움이 있습니다. 기본적으로 그 그룹화 된 세션의 경우 가장 초기의 '생성 된'(보기 세션의 시작 시간)과 최신 Page_id (모듈 내에서 얼마나 멀리 얻었는지)를 반환하고 싶습니다.

이것을 달성하는 가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

선택에서 하위 쿼리를 활용해야한다고 생각합니다.

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

다른 팁

SELECT  MIN(created), MAX(page_id)
FROM    modules
GROUP BY
        session_id
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top