sql >> Databasteknik >  >> RDS >> PostgreSQL

Räkna efter tidigaste datum hittat från en inre sammanfogning?

Du kan använda följande fråga:

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   

Jag använde en NOT EXISTS operatör att utesluta poster som hänför sig till att "betala för sig själva" kunder (om det verkligen är din avsikt).

När du får MIN(created_at) datum per customer_id , då kan du enkelt räkna per datum i en yttre fråga.

Demo här




  1. Bryter Oracles EXTRACT-funktion NOENTITYESCAPING i XMLELEMENT?

  2. Hur man laddar datumdata i MySQL när man använder LOAD DATA

  3. Oracle RESET_PACKAGE återställer inte värdet för en variabel i sessionen

  4. Konvertera Excels 41014-datum till faktiskt datum i PHP eller JavaScript