2017-12-15 1 views
0

세션을 생성해야하는 테이블이 있습니다. 이 표에는 사용자가 기록하고 응용 프로그램 내에서 발생한 이벤트가 있습니다. 이러한 세션은 이벤트 항목이 로그인 일 때 분할되어야합니다. 로그인 이후에 발생하는 동일한 사용자의 모든 항목은 새 로그인 이벤트 항목이 발생할 때까지 동일한 세션의 일부입니다.이벤트 기반의 세션 화 및 mySQL의 타임 스탬프가 없음

두 개의 cols 사용자 및 이벤트와 사용자가 그룹화 한 세션의 분할 및 결과에 Event = 'app:login'을 추가해야하는 경우.

I have created this very basic visual representation of my goal. Not sure if it helps mending the gaps of my explanation.

나는 GROUP BY를 사용하여 다음 각 행에 CONCAT 다음에 그 결과를 결합의 라인을 따라 뭔가를 생각했다.

답변

0

내 결과를 얻을 때까지 frankensteining 함께 일부 임의의 SQL 의해 내 대답을 찾았습니다.

SELECT * 
    , "userid" || '_' || SUM(new_session) 
    OVER (PARTITION BY "userid" ORDER BY "datetime") AS session_id 
FROM (
    SELECT 
    *, 
    CASE WHEN "eventname" = 'login:bo:success' THEN 1 ELSE 0 END as new_session 
    FROM 
    "TEST_events_prepared_2" 
) s1 
관련 문제