WITH grp AS (SELECT emp_id, order_date, DATE(order_date, '-' || ROW_NUMBER() OVER (PARTITION BY emp_id ORDER BY order_date) || ' days') AS grp_key FROM orders), streaks AS (SELECT emp_id, COUNT(*) AS streak_length FROM grp GROUP BY emp_id, grp_key) SELECT emp_id, MAX(streak_length) AS longest_streak FROM streaks GROUP BY emp_id HAVING MAX(streak_length) >= 2 ORDER BY longest_streak DESC, emp_id;
Write your query and click "Run Query" (Ctrl + Enter) to see results and testcase validation.