는 당신이 첫 번째 단계는
select t.*,
@curRow := @curRow + 1 AS row_number
from transaction t
JOIN (SELECT @curRow := 0) r
order by user, timestamp
결과
user, timestamp, row_id
1 t1 1
1 t1+x 2
...
다음 단계로 연속 작업을 가입하는 것입니다 올바른 순서로 정렬됩니다
table transaction
user; Timestamp
유형의 로그가 있다고 가정 같은 사용자
012 33,
결과 :
user timestamp row user timestamp row
1 t1 1 1 t1+x 2
2 t1+x 2 1 t1+x+x2 3
...
지금 당신은 이벤트 지금
select * from
(select t.*,
@curRow := @curRow + 1 AS row_number
from transaction t
JOIN (SELECT @curRow := 0) r
order by user, timestamp) a
inner join
(select t.*,
@curRow := @curRow + 1 AS row_number
from transaction t
JOIN (SELECT @curRow := 0) r
order by user, timestamp)b
on a.user=b.user and a.row_id=b.row_id+1
WHERE datediff(b.timestamp, a.timestamp)>120
당신이 거래 경우를 사이 1백20일보다 긴 휴식을 가지고 사용자의 lsit이 사이의 시간 간격에 의해 필터링해야 acc를 만들 처음 며칠 이내에이 작업이 필요하다면
where user in(select user from .... where datediff(min(timestamp, creation_Date)<120)
을 추가하거나 user_id에 내부 조인을 수행하여 해당 하위 쿼리로 필터링
모든 거래가 발생합니다. 거래 날짜를 저장하고 있습니까? – Jhanvi
테이블 구조를 추가하십시오. –
created_at에 의한 간단한 순서가 아님 desc limit 1 offset 1? –