Входные данные
У меня есть ежедневные данные о транзакциях на уровне пользователя, и я хочу вычислить ежемесячные продажи по разным категориям - агрегирование для пользователей, которые купили только из более чем 1 категории.
Может кто-нибудь предложить, как это сделать в sql?
@MadhurBhaiya, приносим извинения за то, что не можем поделиться соответствующими данными из соображений конфиденциальности. Если бы вы могли поделиться подходом, это тоже было бы полезно.
Нас не интересуют реальные данные. Пожалуйста, прочитайте ссылку в моем предыдущем комментарии. Это поможет лучше сформулировать вопрос.
@дени99 . . . Я удалил тег MySQL, предполагая, что Vertica более намеренно.
Хм . . . это, кажется, делает то, что вы описываете:
select date_trunc('month', day), category,
sum(transaction_amount), count(distinct user_id)
from (select d.*,
min(category) over (partition by userid, date_trunc('month', day)) as min_category,
max(category) over (partition by userid, date_trunc('month', day)) as max_category
from daily d
) d
where min_category <> max_category -- at least two categories
group by date_trunc('month', day), category;
Спасибо за ваш ответ. Получение исключения для предложения where здесь. ОШИБКА: агрегаты не разрешены в предложении WHERE
@дени99 . . . Я исправил опечатку.
Пожалуйста, формулируйте вопросы SQL с помощью релевантные и минимальные выборочные данные, демонстрирующих ваши требования, и соответствующий ожидаемый результат. Прочтите эту ссылку: Почему я должен предоставлять MCVE для того, что мне кажется очень простым SQL-запросом?