思路:本题就是前一题的基础上,再添加一个group by 和 having。

但要注意的是: having 用来筛选聚合函数,where 用来筛选非聚合函数

tips: SELECT 语句的处理顺序如下:

  1. FROM
  2. ON
  3. JOIN
  4. WHERE
  5. GROUP BY
  6. WITH CUBE 或 WITH ROLLUP
  7. HAVING
  8. SELECT
  9. DISTINCT
  10. ORDER BY
  11. 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