sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Contando por la fecha más antigua encontrada a partir de una unión interna?

Puede utilizar la siguiente consulta:

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   

Usé un NOT EXISTS operador que excluya los registros relacionados con los clientes que "pagan por sí mismos" (si esa es realmente su intención).

Una vez que obtenga el MIN(created_at) fecha por customer_id , entonces puede contar fácilmente por fecha en una consulta externa.

Demostración aquí