В plus_users — подписчики Яндекс Плюса с датой рождения birth_date (NULL, если не указана). В mailing_runs одна строка: run_date — день запуска рассылки с подарком ко дню рождения.
Найдите подписчиков, у которых день рождения попадает в 7 дней с run_date по run_date + 6 включительно. Родившиеся 29 февраля в невисокосный год празднуют 28 февраля. Верните user_id, birthday — дату ближайшего дня рождения и turns — сколько лет исполняется в этот день. Порядок — по birthday, затем user_id.
В работе: Еженедельная рассылка промокода ко дню рождения: в последнюю неделю декабря именинники января не должны пропасть.
Таблицы
plus_users — подписчики
| Колонка | Тип | Что значит |
|---|---|---|
user_id | int | ключ |
birth_date | date | дата рождения, NULL — не указана |
plan | text | тариф подписки |
mailing_runs — одна строка — дата запуска
| Колонка | Тип | Что значит |
|---|---|---|
run_date | date | день рассылки |
Пример: данные
plus_users · 6 строк
| user_id | birth_date | plan |
|---|---|---|
| 1 | 1990-06-10 | Плюс |
| 2 | 1985-06-16 | Плюс Мульти |
| 3 | 1999-06-17 | Плюс |
| 4 | 2001-06-09 | Плюс |
| 5 | NULL | Плюс |
| 6 | 1972-06-12 | Плюс Мульти |
mailing_runs · 1 строка
| run_date |
|---|
| 2026-06-10 |
Ожидаемый ответ
| user_id | birthday | turns |
|---|---|---|
| 1 | 2026-06-10 | 36 |
| 6 | 2026-06-12 | 54 |
| 2 | 2026-06-16 | 41 |
SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
user_id, birthday, turns
Источник: наша задача на данных Яндекса: подарки подписчикам Плюса ко дню рождения. Условие пересказано своими словами.
Посмотреть данные, проверить кусок запроса. На зачёт не влияет.
Здесь появится результат отправки.