Топы
Какой средний возраст клиентов, купивших Smartwatch (использовать наименование товара products.name) в 2024 году?
Поля в результирующей таблице: average_age
Нужно посчитать средний возраст по уникальным клиентам, купившим товар с названием products.name = 'Smartwatch' в 2024 году. Каждый клиент учитывается в среднем один раз, даже если у него было несколько покупок. Возраст считаем на дату покупки (например, на дату первой покупки Smartwatch в 2024 году) и возвращаем одной колонкой average_age.
Формулировка «средний возраст клиентов, купивших Smartwatch» в этой задаче трактуется как средний возраст по уникальным клиентам, а не по всем покупкам. То есть нам нужно взять каждого клиента, у которого в 2024 году была хотя бы одна покупка товара Smartwatch, посчитать его возраст на момент покупки (обычно достаточно возраста на первую покупку Smartwatch в 2024 году), затем усреднить эти возрастные значения по клиентам. Поэтому важно убрать дубликаты клиентов (через GROUP BY по customer_id или подзапрос с уникальными клиентами) и не считать одного и того же человека несколько раз.
Логика решения такая: сначала отфильтровать заказы 2024 года (в редакторе год просят указывать как строку '2024' в условии по году; если данные не возвращаются, можно попробовать числовой формат 2024), затем оставить только позиции, где products.name = 'Smartwatch', присоединить таблицу клиентов для получения даты рождения, для каждого клиента вычислить возраст на дату его покупки Smartwatch в 2024 году (например, по первой покупке), сгруппировать данные по идентификатору клиента и взять среднее значение по полученным возрастам, чтобы каждый клиент влиял на метрику ровно один раз.
Типичная ошибка в этой задаче — считать средний возраст по всем покупкам Smartwatch, не убирая дубликаты клиентов: тогда один и тот же клиент с несколькими заказами учитывается в среднем несколько раз и искажает результат. Такой подход даёт метрику «средний возраст покупки», а не «средний возраст клиента», поэтому его нужно избегать.
Отметьте свой прогресс