MySQL 쿼리 주문 데이터 두 가지 방법
-
08-07-2019 - |
문제
다음 표를 사용하여 모듈 내에서 페이지보기를 추적하고 있습니다.
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
제휴하지 않습니다 StackOverflow