Bạn có thể sử dụng truy vấn sau:
SELECT MIN(current_day) AS start_day,
MAX(current_day) AS stop_day,
browser
FROM (
SELECT current_day, browser,
@grp := IF(@br = browser, @grp,
IF(@br := browser, @grp+1, @grp+1)) AS grp
FROM mytable
CROSS JOIN (SELECT @grp := 0, @br := '') AS vars
ORDER BY current_day) AS t
GROUP BY browser, grp
Truy vấn trên sử dụng các biến, để xác định các đảo của các bản ghi liên tiếp có cùng một browser
giá trị. Nó trả về một hàng cho mỗi trình duyệt. Bạn phải lặp lại cùng một truy vấn con hai lần và sử dụng UNION
nếu bạn muốn lấy hai các dòng riêng biệt cho mỗi ngày tối thiểu / tối đa.