Truy vấn bên trong đếm từng vệt. Truy vấn bên ngoài nhận được giá trị tối đa cho mỗi người dùng. Truy vấn chưa được kiểm tra (nhưng dựa trên một truy vấn hoạt động)
set @user_id = null;
set @streak = 1;
select user_id, max(streak) from (
SELECT user_id, streak,
case when @user_id is null OR @user_id != user_id then @streak := 1 else @streak := @streak + 1 end as streak_formula,
@user_id := user_id,
@streak as streak
FROM my_table
) foo
group by user_id