第一步:按照题目要求,找出product_name在C++、Java、Python中的订单,并且筛选日期大于2025-10-15
SELECT *
FROM order_info
WHERE product_name IN ("C++","Java","Python")
AND DATE> "2025-10-15"
显示结果如图:
第二步:上窗口函数,统计user_id中status的数量
SELECT user_id, product_name, STATUS, DATE,
COUNT(STATUS) over(PARTITION BY user_id ORDER BY STATUS) "cout"
FROM
(SELECT *
FROM order_info
WHERE product_name IN ("C++","Java","Python")
AND DATE> "2025-10-15") t
显示结果如图:
第三步:上图已经很明确了,根据题意,找出status为“completed”及“cout”大于等于2的数据即可,注意select后面加上distinct关键字
SELECT DISTINCT user_id
FROM
(SELECT user_id, product_name, STATUS, DATE,
COUNT(STATUS) over(PARTITION BY user_id ORDER BY STATUS) "cout"
FROM (SELECT * FROM order_info WHERE product_name IN ("C++","Java","Python") AND DATE> "2025-10-15")t ) tt
WHERE STATUS = "completed" AND cout >= 2
ORDER BY user_id
显示结果如图:
京公网安备 11010502036488号