方法1

select user_id
from(
    select user_id,count(user_id) as cud
    from (
        select *
        from order_info
        where date > '2025-10-15'
        and status = 'completed'
        and product_name in ('C++','Java','Python')
        ) as cd
    group by user_id
    ) as ccd
where cud >= 2
order by user_id;

方法2

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

这道题本来就是一个方法2就可以解决的,但是我忘了聚合函数的使用条件,不得不找了一个麻烦的方法,来一点一点的剥离剖析。

聚合函数的使用:首先要有分组GROUP,其次可以在SELECT语句中使用(但是只能包含聚合函数和分组列),也可以在HAVING语句中使用。