Войти Регистрация
Data base

2. Средний возраст покупателей смарт-часов

Лёгкая

По таблицам customers, products, purchases посчитайте средний возраст покупателей, которые в 2025 году купили хотя бы одни смарт-часы (products.name = 'Смарт-часы').

Каждый покупатель входит в среднее один раз, сколько бы часов он ни купил. Верните одну колонку avg_age, округлённую до 1 знака. Если таких покупателей нет — одна строка с NULL.

В работе: Портрет аудитории для партнёрской акции с кешбэком на гаджеты.

Таблицы

customers — покупатели

КолонкаТипЧто значит
customer_idintключ
full_nametextимя
ageintвозраст, лет
citytextгород

products — справочник товаров

КолонкаТипЧто значит
product_idintключ
nametextназвание: Ноутбук, Монитор, Мышь, Смарт-часы

purchases — одна строка — одна покупка

КолонкаТипЧто значит
purchase_idintключ
customer_idintпокупатель
product_idintтовар
purchased_attimestampвремя покупки
price_rubnumericцена, ₽

Пример: данные

customers · 3 строки

customer_idfull_nameagecity
1Светлана Орлова25Москва
2Артём Белов41Москва
3Наиль Галиев33Казань

products · 4 строки

product_idname
1Ноутбук
2Монитор
3Мышь
4Смарт-часы

purchases · 3 строки

purchase_idcustomer_idproduct_idpurchased_atprice_rub
1142025-05-10T12:00:0024990
2242025-08-01T19:30:0031990
3312025-08-02T10:00:0084990

Ожидаемый ответ

avg_age
33
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк не важен.
avg_age
подзапросDISTINCTдаты

Источник: разбор SQL-интервью в Альфа-Банк на Хабре, 2024. Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.