方法一:内表找出user_id,外表找出该user_id符合的记录

with moreThan1 as(
    select user_id
    from order_info
    where product_name in ('C++','Java','Python')
    and status = 'completed' and date > '2025-10-15'
    group by user_id
    having count(*) >= 2
)

select *
from order_info
where user_id in (select * from moreThan1)
and product_name in ('C++','Java','Python')
and status = 'completed' and date > '2025-10-15'
order by id

方法二:count聚合窗口函数

select t1.id, t1.user_id,t1.product_name,t1.status,t1.client_id,t1.date
from
(
    select *,count(id)over(partition by user_id) as number
    from order_info
    where datediff(date,"2025-10-15")>0
      and status ="completed"
      and product_name in ("C++","Java","Python")
) t1
where t1.number >1
order by t1.id