Bảng Lịch sử người dùng sau đây chứa một bản ghi cho mỗi ngày một người dùng nhất định đã truy cập một trang web (trong khoảng thời gian UTC 24 giờ). Nó có nhiều ngàn bản ghi, nhưng chỉ có một bản ghi mỗi ngày cho mỗi người dùng. Nếu người dùng không truy cập trang web cho ngày hôm đó, sẽ không có bản ghi nào được tạo.
Id UserId CreationDate ------ ------ ------------ 750997 12 2009-07-07 18: 42: 20.723 750998 15 2009-07-07 18: 42: 20.927 751000 19 2009-07-07 18: 42: 22.283
Điều tôi đang tìm kiếm là một truy vấn SQL trên bảng này với hiệu suất tốt , cho tôi biết những người dùng nào đã truy cập trang web trong (n) ngày liên tục mà không bỏ lỡ một ngày.
Nói cách khác, có bao nhiêu người dùng có (n) bản ghi trong bảng này với các ngày liên tiếp (ngày trước hoặc ngày sau) ? Nếu bất kỳ ngày nào bị thiếu trong chuỗi, chuỗi bị hỏng và sẽ khởi động lại ở 1; chúng tôi đang tìm kiếm những người dùng đã đạt được số ngày liên tục ở đây mà không có khoảng trống.
Tất cả sự tương đồng giữa truy vấn này và huy hiệu Stack Overflow cụ thể hoàn toàn là ngẫu nhiên, tất nhiên .. :)