本题和之前做过的差不多,需要注意的是,case 语句的用法,case when a = b then xxx else xxxx end source 意思是,当 a = b 的时候,赋值 xxx 否则赋值 xxxx 此列以 source 命名。
select case when oi.is_group_buy = 'Yes' then 'GroupBuy' else c.name end source, count(*) cnt
from order_info oi left join client c on oi.client_id = c.id
where oi.user_id in (select user_id from order_info where date > '2025-10-15' and product_name in('C++', 'Java', 'Python')
and status = 'completed' group by user_id having count(id) >= 2)
and date > '2025-10-15' and product_name in('C++', 'Java', 'Python') and status = 'completed'
group by client_id
order by source