sql >> Database >  >> RDS >> PostgreSQL

Tellen op vroegste datum gevonden van een inner join?

U kunt de volgende zoekopdracht gebruiken:

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   

Ik gebruikte een NOT EXISTS operator om records uit te sluiten die betrekking hebben op 'zichzelf betalen'-klanten (als dat echt uw bedoeling is).

Zodra u de MIN(created_at) datum per customer_id , dan kun je gemakkelijk per datum tellen in een outer query.

Demo hier




  1. SQL Server 2012 opvragen van Access 2007-gegevens met behulp van OPENROWSET-fout

  2. GROUP_CONCAT met limiet

  3. bewerking van gegevensmanipulatie niet legaal op deze weergave die plaatsvindt in een gebruikerstabel

  4. hoe records uit de database te verwijderen met een Ajax