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

235. Выручка от мужчин и женщин и мужчины с четырьмя айтемами

Лёгкая

В users — пол пользователя: 'f', 'm' или NULL, если не указан. В orders — заказы во внутреннем магазине: цена одного айтема price и их количество items.

Одной строкой верните female_revenue и male_revenue — выручку от женщин и от мужчин (сумма price * items; нет заказов — 0), и men_over_3_items — сколько мужчин купили в сумме по всем своим заказам больше трёх айтемов. Пользователи без указанного пола ни в одну колонку не входят.

В работе: Быстрый срез монетизации по аудитории перед запуском промо для одной из групп.

Таблицы

users — одна строка — один пользователь

КолонкаТипЧто значит
user_idintключ
sextext'f', 'm' или NULL

orders — одна строка — один заказ

КолонкаТипЧто значит
order_idintключ
user_idintпользователь
priceintцена айтема, ₽
itemsintколичество

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

users · 6 строк

user_idsex
1f
2f
3m
4m
5NULL
6m

orders · 7 строк

order_iduser_idpriceitems
113492
21991
3214901
431492
531492
649903
755004

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

female_revenuemale_revenuemen_over_3_items
228735661
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 5 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк не важен.
female_revenue, male_revenue, men_over_3_items
условная агрегацияGROUP BYHAVINGNULL

Источник: тестовое продуктового аналитика (Middle) во ВКонтакте, сборник No Data No Growth. Условие пересказано своими словами.