sql >> Databáze >  >> RDS >> PostgreSQL

Počítání podle nejstaršího data nalezeného z vnitřního spojení?

Můžete použít následující dotaz:

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   

Použil jsem NOT EXISTS operátora, aby vyloučil záznamy, které se týkají zákazníků „platí za sebe“ (pokud je to skutečně vaším záměrem).

Jakmile získáte MIN(created_at) datum podle customer_id , pak můžete snadno počítat podle data ve vnějším dotazu.

Ukázka zde




  1. Vytvořte seznam s prvním a posledním dnem v měsíci pro dané období

  2. Transformace tabulky / parsování polí v PL/SQL

  3. Operátory Oracle <> , !=, ^=

  4. Možné důsledky zvýšení délky varchar v MySql?