PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Parcourez les clients sur une base continue de 12 mois et vérifiez si un client n'a pas commandé au cours des 12 derniers mois

Ceci est la requête précédente avec un WHERE clause :

SELECT gs.month, c.customer, MAX(c.order_date + interval '12 month')::date as churn_date
FROM customers c CROSS JOIN
     GENERATE_SERIES('2021-03-01'::date, '2021-04-01'::date, interval '1 month') gs(month)
WHERE c.order_date < gs.month + interval '1 month'
GROUP BY gs.month, c.customer
HAVING DATE_TRUNC('month', MAX(c.order_date)) = DATE_TRUNC('month', gs.month) - interval '12 month';

ici est un db<>violon.