看了一下 俺的代码比较取巧
select user_id,
min(date),
substr(group_concat(distinct(date)order by date ), 12, 10) ,
count(user_id) cnt
from order_info where date>'2025-10-15' and product_name in ('Python', 'C++', 'Java') and status='completed'
group by user_id
having(count(user_id))>1
order by user_id;

其他部分没啥好说
substr(group_concat(distinct(date)order by date ), 12, 10)
将分组的日期按照升序排列进行','拼接, 然后截取'2025-10-16,2025-10-23,2025-10-27'
第二天的日期比如 [12, 10] '2025-10-23'
第三天 [21(20<10*2 段日期>+1<逗号>), 10<日期长度>]