WITH ranked AS (
SELECT
*,
count(*) over (partition by user_id) AS cnt
FROM
order_info
WHERE
date >= '2025-10-15' AND
status = 'completed' AND
(product_name = 'Python' OR product_name = 'C++' OR product_name = 'Java')
),
groupbuy AS (
SELECT
*,
count(*) over (partition by user_id) AS cnt
FROM
order_info
WHERE
is_group_buy = 'YES'
)
SELECT
case
when r.client_id != 0 then c.name
else 'GroupBuy'
End AS source,
count(client_id) AS cnt
FROM
ranked r
LEFT JOIN
client c
ON
r.client_id = c.id
WHERE
r.cnt >= 2
GROUP BY
source, r.client_id
ORDER BY
source