По таблицам customers, products, purchases посчитайте средний возраст покупателей, которые в 2025 году купили хотя бы одни смарт-часы (products.name = 'Смарт-часы').
Каждый покупатель входит в среднее один раз, сколько бы часов он ни купил. Верните одну колонку avg_age, округлённую до 1 знака. Если таких покупателей нет — одна строка с NULL.
В работе: Портрет аудитории для партнёрской акции с кешбэком на гаджеты.
Таблицы
customers — покупатели
| Колонка | Тип | Что значит |
|---|---|---|
customer_id | int | ключ |
full_name | text | имя |
age | int | возраст, лет |
city | text | город |
products — справочник товаров
| Колонка | Тип | Что значит |
|---|---|---|
product_id | int | ключ |
name | text | название: Ноутбук, Монитор, Мышь, Смарт-часы |
purchases — одна строка — одна покупка
| Колонка | Тип | Что значит |
|---|---|---|
purchase_id | int | ключ |
customer_id | int | покупатель |
product_id | int | товар |
purchased_at | timestamp | время покупки |
price_rub | numeric | цена, ₽ |
Пример: данные
customers · 3 строки
| customer_id | full_name | age | city |
|---|---|---|---|
| 1 | Светлана Орлова | 25 | Москва |
| 2 | Артём Белов | 41 | Москва |
| 3 | Наиль Галиев | 33 | Казань |
products · 4 строки
| product_id | name |
|---|---|
| 1 | Ноутбук |
| 2 | Монитор |
| 3 | Мышь |
| 4 | Смарт-часы |
purchases · 3 строки
| purchase_id | customer_id | product_id | purchased_at | price_rub |
|---|---|---|---|---|
| 1 | 1 | 4 | 2025-05-10T12:00:00 | 24990 |
| 2 | 2 | 4 | 2025-08-01T19:30:00 | 31990 |
| 3 | 3 | 1 | 2025-08-02T10:00:00 | 84990 |
Ожидаемый ответ
| avg_age |
|---|
| 33 |
SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк не важен.
avg_age
Источник: разбор SQL-интервью в Альфа-Банк на Хабре, 2024. Условие пересказано своими словами.
Посмотреть данные, проверить кусок запроса. На зачёт не влияет.
Здесь появится результат отправки.