Bạn có thể sử dụng truy vấn sau:
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
Tôi đã sử dụng NOT EXISTS
để loại trừ các hồ sơ liên quan đến việc khách hàng 'tự trả tiền cho họ' (nếu đó thực sự là ý định của bạn).
Khi bạn nhận được MIN(created_at)
ngày mỗi customer_id
, thì bạn có thể dễ dàng đếm mỗi ngày trong một truy vấn bên ngoài.