Vous pouvez utiliser la requête suivante :
SELECT CONCAT(EXTRACT(MONTH FROM startedPayingDate), '-',
EXTRACT(YEAR FROM startedPayingDate)) AS "Month",
COUNT(*) AS "Total AB Paying Customers"
FROM (
SELECT customer_id, MIN(created_at) AS startedPayingDate
FROM customerusermap AS cm
WHERE NOT EXISTS (SELECT 1
FROM users AS u
WHERE cm.user_id = u.id)
GROUP BY customer_id ) AS t
GROUP BY 1
J'ai utilisé un NOT EXISTS
opérateur pour exclure les enregistrements liés aux clients "payant pour eux-mêmes" (si telle est vraiment votre intention).
Une fois que vous obtenez le MIN(created_at)
date par customer_id
, vous pouvez facilement compter par date dans une requête externe.