← Alle AufgabenSQL · Senior
Die längste Serie aufeinanderfolgender Tage
Finde für jeden Nutzer die längste Serie aufeinanderfolgender Tage, an denen er sich angemeldet hat: Spalten user_id und longest_streak, sortiert nach user_id. Mehrere Anmeldungen an einem Tag zählen als ein Tag, und eine Serie kann über eine Monatsgrenze gehen.
Tabellen
CREATE TABLE logins (
user_id int NOT NULL,
day date NOT NULL -- several logins on the same day are possible
);Strg+Enter führt die Tests aus. Tab rückt ein; um den Editor per Tastatur zu verlassen, drücke Esc und dann Tab. Der Code wird in diesem Browser gespeichert.
Tests (3)
Jeder Test füllt die Tabellen mit eigenen Daten und vergleicht das Ergebnis deiner Abfrage mit dem erwarteten: dieselben Spalten (Namen und Reihenfolge) und dieselben Zeilen in derselben Reihenfolge, ORDER BY zählt also. Die Abfrage läuft in echtem PostgreSQL direkt im Browser; der erste Start lädt es herunter (etwa 5 MB).
INSERT INTO logins VALUES (1, '2024-01-01'), (1, '2024-01-02'), (1, '2024-01-03'), (1, '2024-01-05'), (1, '2024-01-06'), (2, '2024-01-10');
-- duplicate logins on one day and a streak across months INSERT INTO logins VALUES (1, '2024-01-30'), (1, '2024-01-30'), (1, '2024-01-31'), (1, '2024-02-01'), (1, '2024-02-03'), (2, '2024-03-01'), (2, '2024-03-03'), (2, '2024-03-05');
-- the longest streak is the later one INSERT INTO logins VALUES (5, '2024-06-01'), (5, '2024-06-10'), (5, '2024-06-11'), (5, '2024-06-12'), (5, '2024-06-13');