SQL

امتیازدهی کامل RFM: تازگی، فراوانی و مبلغ تو پنجک‌ها

یه زنجیره با دو CTE: اول سه محور RFM رو برای هر مشتری تجمیع می‌کنه، با NTILE به پنجک‌ها امتیاز میده، بعد یه بخش‌بندی خوانا (قهرمان، VIP که باید دوباره فعال بشه، ازدست‌رفته) آمادهٔ CRM می‌سازه.

کاربرد

تغذیهٔ کارزارهای بازاریابی: خروجی گرفتن از هر سگمنت با امتیازش به ابزار ایمیل‌مارکتینگ.

پیش‌نیازها

PostgreSQL, MySQL 8+, SQL Server (NTILE)

SQL
WITH base AS (
    SELECT customer_id,
           CURRENT_DATE - MAX(order_date) AS recence_j,
           COUNT(*)    AS frequence,
           SUM(amount) AS montant
    FROM orders
    WHERE order_date >= CURRENT_DATE - INTERVAL '24 months'
    GROUP BY customer_id
),
scores AS (
    SELECT *,
        6 - NTILE(5) OVER (ORDER BY recence_j) AS score_r,
        NTILE(5) OVER (ORDER BY frequence)     AS score_f,
        NTILE(5) OVER (ORDER BY montant)       AS score_m
    FROM base
)
SELECT customer_id, recence_j, frequence, montant,
       score_r || score_f || score_m AS rfm,
       CASE
           WHEN score_r >= 4 AND score_f >= 4 AND score_m >= 4 THEN 'Champion'
           WHEN score_r <= 2 AND score_m >= 4 THEN 'VIP à réactiver'
           WHEN score_r <= 2 AND score_f <= 2 THEN 'Perdu'
           ELSE 'Standard'
       END AS segment
FROM scores
ORDER BY montant DESC
LIMIT 6;

نتیجه

 customer_id | recence_j | frequence | montant  | rfm |     segment
-------------+-----------+-----------+----------+-----+-----------------
        4021 |         6 |        38 | 18420.50 | 555 | Champion
        4187 |       148 |        24 | 12305.00 | 245 | VIP à réactiver
        4302 |        12 |        19 |  6840.75 | 544 | Champion
        4099 |        67 |        11 |  4210.00 | 334 | Standard
        4233 |       291 |         3 |  1980.25 | 113 | Perdu
        4150 |        38 |         7 |   820.00 | 421 | Standard
(6 rows)
SQLRFMSegmentationMarketingMulti-CTE

اسنیپت‌های مرتبط

بازگشت به آزمایشگاه داده