题解 | #牛客的课程订单分析(六)#
牛客的课程订单分析(六)
http://www.nowcoder.com/practice/c5736983c322483e9f269dd23bdf2f6f
看起来有点复杂,但是思路我觉得还是很简单
先找出符合条件的user_id,购买时间,购买状态,购买的课程限制,购买数量
利用user_id 内联结, 倒查订单信息, 这一步要再用where 限制条件因为 同一个user_id, 他可能在之前买了,购买没有完成, 买的课程不是三门课之一,所以需要再过滤一次
左外联结得出 client_name字段, 然后就是简单的select和 case when子句做个选择,然后再排序即可
select oi.id, oi.is_group_buy, case when oi.is_group_buy='No' then c.name else NUll end client_name
FROM
order_info oi
inner join
(SELECT user_id, count(id) cnt
from order_info
where date>'2025-10-15' and status='completed'
and product_name in ('C++','Python','Java')
group by user_id
having count(id)>=2) t
on t.user_id=oi.user_id
left outer join client c
ON c.id=oi.client_id
where oi.date>'2025-10-15' and oi.status='completed'
and oi.product_name in ('C++','Python','Java')
order by oi.id;