select a.source,count(a.source) cnt from
(select ifnull(c.name,'GroupBuy') source,user_id
from order_info o
left join
client c
on o.client_id=c.id
where datediff(date,'2025-10-15')>0
and product_name in ('C++','Java','Python')
and status='completed'
and o.user_id in (
    select user_id
    from order_info
    where datediff(date,'2025-10-15')>0
    and product_name in ('C++','Java','Python')
    and status='completed'
    group by user_id
    having count(*)>1
)) a
group by a.source
order by a.source

  • 利用表连接得到渠道和订单的表
  • 利用筛选条件得到符合要求的订单
  • 还包括子查询得到下单两次的用户
  • 然后使用groupby的到最终结果