Retention an Tag N und laufende Retention
Der Unterschied zwischen klassischen, laufenden und begrenzten Retention-Definitionen.
Retention an Tag N und laufende Retention ist eine kostenlose Coding Interview Prep-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Coding Interview Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Coding Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
Warum Retention mehrere Definitionen hat
Ein Interviewer wird selten einfach sagen: „Berechnen Sie die Retention.“ Die entscheidende Rückfrage lautet: Welche Retention? Aus denselben Daten ergeben sich je nach Definition sehr unterschiedliche Werte.
Diese drei Definitionen müssen Sie kennen: Day-N (klassische) Retention, Rolling-Retention und Retention mit begrenztem Zeitfenster. Den Unterschied zu kennen und nachzufragen, welche Variante das Unternehmen benötigt, ist bereits die eigentliche Fähigkeit, die hier geprüft wird.
Day-N-Retention (klassisch)
Bei der Day-N-Retention lautet die Frage: War der Nutzer genau am Tag N nach seiner ersten Aktion aktiv? Day 1, Day 7 und Day 30 sind die klassischen Kennzahlen für mobile Apps.
Das entscheidende Wort ist genau. Ein Nutzer, der an Tag 6 und Tag 8, aber nicht an Tag 7 aktiv war, gilt nach der klassischen Definition nicht als Day-7-retained. Diese Präzision macht die Zählung streng und die Kurve unregelmäßig.
Die Tagesdifferenz berechnen
Day-N-Retention hängt von der Anzahl der Tage zwischen dem Kohortenstart und jedem Aktivitätstag ab. In Postgres ergibt die Subtraktion zweier Datumswerte direkt eine ganzzahlige Anzahl von Tagen.
Andere Dialekte: DATEDIFF(day, start, d) in SQL Server und DATEDIFF(d, start) in MySQL. Nennen Sie den verwendeten Dialekt; das Konzept – ein Tagesoffset – ist identisch.
WITH cohort AS (
SELECT user_id, MIN(event_at::date) AS day0
FROM events GROUP BY user_id
),
act AS (
SELECT DISTINCT user_id, event_at::date AS day
FROM events
)
SELECT c.user_id, (a.day - c.day0) AS day_n
FROM cohort c
JOIN act a ON a.user_id = c.user_id;Eine Abfrage für Day-7-Retention
Für die Day-7-Retention-Rate zählen Sie die unterschiedlichen Nutzer, deren Tagesoffset 7 beträgt, und teilen diese Zahl durch die Kohortengröße. Verwenden Sie eine bedingte Aggregation, damit Zähler und Nenner aus einem einzigen Scan stammen.
Die Gleichheit = 7 und nicht >= 7 kennzeichnet die klassische Retention. Wenn Sie die Gleichheit durch eine Ungleichung ersetzen, ändern Sie die Definition unbemerkt.
WITH dn AS (
SELECT c.user_id, (a.day - c.day0) AS day_n
FROM cohort c JOIN act a ON a.user_id = c.user_id
)
SELECT
COUNT(DISTINCT CASE WHEN day_n = 7 THEN user_id END) AS d7_retained,
COUNT(DISTINCT user_id) AS cohort_size,
ROUND(100.0 * COUNT(DISTINCT CASE WHEN day_n = 7 THEN user_id END)
/ NULLIF(COUNT(DISTINCT user_id), 0), 1) AS d7_pct
FROM dn;Rolling-Retention (unbegrenzt)
Rolling-Retention für Tag N stellt eine weniger strenge Frage: War der Nutzer an Tag N oder an einem beliebigen späteren Tag aktiv? Ein Nutzer gilt bei Day 7 als retained, wenn er an Tag 7, an Tag 20 oder irgendwann danach zurückgekehrt ist.
Dadurch entsteht eine glattere und höhere Kurve. Diese Definition wird häufig bevorzugt, um die langfristige Bindung zu messen. Das entscheidende Merkmal ist die Änderung von = N zu >= N beim letzten Aktivitätstag.
Rolling-Retention mit dem letzten Aktivitätstag
Die saubere Berechnung der Rolling-Retention besteht darin, für jeden Nutzer den letzten Tagesoffset mit Aktivität zu ermitteln (MAX). Ein Nutzer ist bei Tag N rolling-retained, wenn dieses Maximum >= N ist.
Nach der MAX-Aggregation steht jeder Nutzer in genau einer Zeile, sodass das Zählen einfach ist. Außerdem wird dadurch direkt deutlich, dass Rolling-Retention monoton ist: Wenn Sie an Tag 30 retained sind, sind Sie auch bei jedem kleineren N retained.
WITH last_day AS (
SELECT c.user_id, MAX(a.day - c.day0) AS max_day_n
FROM cohort c JOIN act a ON a.user_id = c.user_id
GROUP BY c.user_id
)
SELECT
COUNT(*) AS cohort_size,
COUNT(*) FILTER (WHERE max_day_n >= 7) AS rolling_d7,
ROUND(100.0 * COUNT(*) FILTER (WHERE max_day_n >= 7)
/ NULLIF(COUNT(*), 0), 1) AS rolling_d7_pct
FROM last_day;Retention mit begrenztem Zeitfenster
Der Mittelweg ist die Retention mit begrenztem Zeitfenster: Der Nutzer war innerhalb eines Zeitfensters um Tag N mindestens einmal aktiv, zum Beispiel an den Tagen 5 bis 9 für die Kennzahl „Woche 1“. Diese Definition berücksichtigt Nutzer, die am exakten Tag nicht aktiv waren, glättet aber weniger stark als die vollständig rollierende Variante.
Dies ist die realistischste Definition für viele Geschäftsbereiche, weil die tatsächliche Nutzung in Schüben erfolgt. In der Abfrage wird der Tagesoffset mit BETWEEN geprüft.
SELECT
COUNT(DISTINCT CASE WHEN day_n BETWEEN 5 AND 9
THEN user_id END) AS week1_retained,
COUNT(DISTINCT user_id) AS cohort_size
FROM dn;Drei Definitionen, derselbe Nutzer
Machen Sie den Unterschied anhand eines konkreten Beispiels deutlich. Ein Nutzer startet an Tag 0 und ist danach nur an Tag 9 aktiv.
- Klassische Day-7-Retention: NICHT retained (keine Aktivität genau an Tag 7).
- Rolling Day-7-Retention: retained (maximaler Tag 9 >= 7).
- Begrenztes Zeitfenster 5–9, Woche 1: retained (Tag 9 liegt innerhalb des Zeitfensters).
Dieselben Daten, drei Antworten. Erläutern Sie im Interview ein Beispiel wie dieses, um zu zeigen, dass Sie die Semantik und nicht nur die Syntax verstehen.
Periodengranularität: Tag, Woche oder Monat
„Day-N“ lässt sich zu Period-N verallgemeinern. Für ein B2B-Produkt mit monatlicher Nutzung wäre eine tagesbasierte Retention nur Rauschen; Sie würden nach Monaten gruppieren und nach Monat N fragen. Die Mechanik ist identisch, nur die Granularität der Trunkierung ändert sich.
Wählen Sie die Granularität passend zum natürlichen Nutzungsrhythmus des Produkts und begründen Sie Ihre Wahl. Täglich für mobile Consumer-Produkte, wöchentlich oder monatlich für langsamere B2B-Tools.
-- weekly grain: offset in whole weeks
SELECT
c.user_id,
FLOOR((a.day - c.day0) / 7) AS week_n
FROM cohort c
JOIN act a ON a.user_id = c.user_id;Die Survivorship- und Reifegradfalle
Eine subtile Frage für erfahrene Kandidaten: Melden Sie keine Day-30-Retention für eine Kohorte, die erst 10 Tage alt ist. Diese Nutzer hatten noch keine Gelegenheit, an Tag 30 aktiv zu sein. Ihr Wert ist daher künstlich 0 und nicht Ausdruck einer tatsächlich niedrigen Retention.
Berücksichtigen Sie bei Day-N nur Kohorten, deren Alter >= N ist. Filtern Sie mit CURRENT_DATE - day0 >= N. Wenn Sie dies vergessen, wirken aktuelle Kohorten katastrophal schlecht.
WITH cohort AS (
SELECT user_id, MIN(event_at::date) AS day0
FROM events GROUP BY user_id
)
SELECT *
FROM cohort
WHERE (CURRENT_DATE - day0) >= 30; -- mature enough for Day-30Eine Definition ausdrücklich festlegen
Die beste Antwort im Interview ist keine Abfrage, sondern eine Gegenfrage: „Möchten Sie klassische Day-N-Retention, Rolling-Retention oder ein begrenztes Zeitfenster? Und welches ist die natürliche Periode?“
Erläutern Sie anschließend den Zielkonflikt: Die klassische Variante ist streng und eignet sich für exakt tagesbezogene Produktauslöser; die Rolling-Variante überschätzt kurzfristige Nutzung, erfasst aber die langfristige Bindung; die begrenzte Variante ist der realistische Kompromiss. Zu zeigen, dass Sie die Kennzahl bewusst auswählen, ist der eigentliche Zweck dieser Lektion.
Schnelltest
Die erste Aktion eines Nutzers findet an Tag 0 statt; seine einzige weitere Aktivität ist an Tag 12. Gilt er nach den einzelnen Definitionen bei Day-7 als retained?
Zusammenfassung: Retention-Definitionen
Die wichtigsten Erkenntnisse zu Day-N- und Rolling-Retention:
- Klassische Day-N-Retention: Aktivität genau an Tag N (Offset
= N) – strenge Definition, unregelmäßige Kurve. - Rolling-Retention: Aktivität an Tag N oder später (
MAX offset >= N) – glatter, monoton und ein Maß für die Nutzerbindung. - Retention mit begrenztem Zeitfenster: Aktivität innerhalb eines Zeitfensters (
BETWEEN) – der realistische Kompromiss. - Verallgemeinern Sie den Tag auf jede Periodengranularität, die zum Nutzungsrhythmus des Produkts passt.
- Melden Sie Day-N nur für ausgereifte Kohorten (Alter >= N), um die Survivorship-Falle zu vermeiden, und fragen Sie immer, welche Definition das Unternehmen meint.
Häufig gestellte Fragen
Ist die Lektion „Retention an Tag N und laufende Retention“ kostenlos?
Ja — der vollständige Text von „Retention an Tag N und laufende Retention“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Coding Interview Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Coding Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Retention an Tag N und laufende Retention“?
Der Unterschied zwischen klassischen, laufenden und begrenzten Retention-Definitionen. Du übst Coding Interview Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Coding Interview Prep zu starten?
Keine Vorkenntnisse erforderlich. Coding Interview Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Retention an Tag N und laufende Retention“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Coding Interview Prep-Lektion Code schreiben und ausführen?
Ja. Jede Coding Interview Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Kohorte anhand der ersten Aktion definieren
- Eine Retention-Matrix erstellen
- Retention an Tag N und laufende Retention
- Abwanderungs- und Wiederkehrabfragen