Retentie

Zakelijke data analyseren in SQL

Michel Semaan

Data Scientist

MAU - valkuilen

  • Laat de verdeling van actieve gebruikers naar looptijd niet zien
  • Maakt geen onderscheid tussen verschillende patronen van gebruikersactiviteit
    • Case 1: elke maand registreren 100 gebruikers, en ze zijn maar één maand actief
    • Case 2: alleen in de eerste maand registreren 100 gebruikers; daarna niemand meer, maar deze 100 zijn elke maand actief
    • In beide gevallen zijn de MAU's 100!
Zakelijke data analyseren in SQL

MAU - uitsplitsing

Uitsplitsing

  • Nieuwe gebruikers die deze maand zijn gestart
  • Behouden gebruikers waren vorige maand actief en bleven deze maand actief
  • Herleefde gebruikers waren vorige maand niet actief, maar keerden deze maand terug
Zakelijke data analyseren in SQL

Retentiegraad - overzicht

  • Retentiegraad: percentage dat meet hoeveel gebruikers die vorige maand actief waren nu nog actief zijn
  • Formule: $\frac{Uc}{Up}$, waarbij $Uc$ het aantal unieke gebruikers is dat in zowel de huidige als vorige maand actief was, en $Up$ het aantal unieke gebruikers in de vorige periode
  • Voorbeeld: $\frac{80}{100} = 0{,}8 = 80\%$
Zakelijke data analyseren in SQL

Retentiegraad - query

WITH user_activity AS (
  SELECT DISTINCT
    DATE_TRUNC('month', order_date) :: DATE AS delivr_month,
    user_id
  FROM orders)

SELECT previous.delivr_month, ROUND( COUNT(DISTINCT current.user_id) :: NUMERIC / GREATEST(COUNT(DISTINCT previous.user_id), 1), 2) AS retention
FROM user_activity AS previous LEFT JOIN user_activity AS current ON previous.user_id = current.user_id AND previous.delivr_month = (current.delivr_month - INTERVAL '1 month') GROUP BY previous.delivr_month ORDER BY previous.delivr_month ASC LIMIT 3;
Zakelijke data analyseren in SQL

Retentiegraad - resultaat

delivr_month  retention
------------  ---------
2018-06-01    0.70
2018-07-01    0.70
2018-08-01    0.76
Zakelijke data analyseren in SQL

Retentie

Zakelijke data analyseren in SQL

Preparing Video For Download...