SELECT
COALESCE(name, 'GroupBuy') AS source
,COUNT(*) AS cnt
FROM
(
SELECT
order_info.id AS id,
order_info.is_group_buy AS is_group_buy,
client.name AS name,
COUNT(*) OVER (PARTITION BY order_info.user_id) AS cnt,
row_number() OVER(PARTITION BY order_info.user_id ORDER BY order_info.date DESC) AS rk
FROM
order_info
LEFT OUTER JOIN
client
ON
order_info.client_id = client.id
WHERE
order_info.date > '2025-10-15'
AND
order_info.status = 'completed'
AND
product_name IN ( 'C++', 'Python', 'Java' )
) AS order_info_ext
WHERE
order_info_ext.cnt >= 2
GROUP BY
COALESCE(name, 'GroupBuy')
ORDER BY
COALESCE(name, 'GroupBuy') ASC
;