← Усі задачіSQL · Senior
Найдовша серія днів поспіль
Для кожного користувача знайдіть найдовшу серію днів поспіль, коли він заходив: колонки user_id і longest_streak, за user_id. Кілька входів за день рахуються як один день, а серія може переходити через межу місяця.
Таблиці
CREATE TABLE logins (
user_id int NOT NULL,
day date NOT NULL -- several logins on the same day are possible
);Ctrl+Enter - запустити тести. Tab - відступ; щоб вийти з редактора клавіатурою, натисніть Esc, а потім Tab. Код зберігається в цьому браузері.
Тести (3)
Кожен тест заповнює таблиці своїми даними й порівнює результат вашого запиту з очікуваним: ті самі колонки (назви й порядок) і ті самі рядки в тому самому порядку, тож ORDER BY важливий. Запит виконується в справжньому PostgreSQL просто в браузері; перший запуск завантажує його (близько 5 МБ).
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');