select
name as source,
count(*) as cnt
from
(
select
*,
(
case
when is_group_buy = 'Yes' then 'GroupBuy'
end
) as name
from
order_info
) a
where
date > '2025-10-15'
and product_name in ('C++', 'Java', 'Python')
and is_group_buy = 'Yes'
group by
name
having
count(*) > 1
union
select
name as source,
count(*) as cnt
from
(
select
*,
count(*) over(partition by user_id ) as cnt1
from
order_info
where
status = 'completed'
and date > '2025-10-15'
and product_name in ('C++', 'Java', 'Python')
) o, client c
where
o.client_id = c.id
and cnt1 > 1
and is_group_buy = 'No'
group by
name
order by
source