思路:本题就是前一题的基础上,再添加一个group by 和 having。
但要注意的是: having 用来筛选聚合函数,where 用来筛选非聚合函数
tips: SELECT 语句的处理顺序如下:
- FROM
- ON
- JOIN
- WHERE
- GROUP BY
- WITH CUBE 或 WITH ROLLUP
- HAVING
- SELECT
- DISTINCT
- ORDER BY
- TOP
在本题中,先是在where语句中进行筛选,然后将筛选后的数据通过group by进行分组 ,接着是having对分组后的数据再进行筛选,最后使用order by 进行排序
完整代码:
select user_id
from order_info
where product_name in ('C++', 'Java', 'Python')
and date > '2025-10-15'
and status = 'completed'
group by user_id
having count(user_id) > 1
order by user_id