← Wszystkie zadaniaSQL · Senior
Najdłuższa seria dni z rzędu
Dla każdego użytkownika znajdź najdłuższą serię dni z rzędu, w które się logował: kolumny user_id i longest_streak, według user_id. Kilka logowań jednego dnia liczy się jako jeden dzień, a seria może przechodzić przez granicę miesiąca.
Tabele
CREATE TABLE logins (
user_id int NOT NULL,
day date NOT NULL -- several logins on the same day are possible
);Ctrl+Enter uruchamia testy. Tab robi wcięcie; aby wyjść z edytora klawiaturą, naciśnij Esc, a potem Tab. Kod zapisuje się w tej przeglądarce.
Testy (3)
Każdy test wypełnia tabele własnymi danymi i porównuje wynik twojego zapytania z oczekiwanym: te same kolumny (nazwy i kolejność) i te same wiersze w tej samej kolejności, więc ORDER BY ma znaczenie. Zapytanie działa w prawdziwym PostgreSQL prosto w przeglądarce; pierwsze uruchomienie go pobiera (około 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');