#sql
#sql
Вопрос:
Я действительно новичок в SQL, поэтому я хочу начать изучать SQL. Здесь у меня есть 2 таблицы:
- Таблица пользователей имеет следующие атрибуты: идентификатор, имя, телефон и created_at
- Таблица транзакций имеет следующие атрибуты: идентификатор, идентификатор пользователя, сумма, created_at
Я хочу получить:
- Ежедневные, еженедельные и ежемесячные активные пользователи (активные пользователи-это пользователи, которые создают по крайней мере 1 транзакцию в этот день).
- Еженедельный и ежемесячный коэффициент удержания
У вас есть какие-нибудь идеи, как решить эту проблему, чтобы я мог попробовать?
Спасибо
Ответ №1:
Чтобы получить идентификаторы и имена ежедневных активных пользователей (пользователей, которые выполнили транзакцию сегодня), вы можете попробовать
select id, name from users where exists (select * from transactions where users.id = transactions.user_id and day(now()) = day(transactions.created_at));
Чтобы узнать количество ежедневных активных пользователей
select count(id) from users where exists (select * from transactions where users.id = transactions.user_id and day(now()) = day(transactions.created_at));
Для еженедельных и ежемесячных активных пользователей просто замените «день» на «месяц» или «неделю» в запросах. Пример
select count(id) from users where exists (select * from transactions where users.id = transactions.user_id and month(now()) = month(transactions.created_at));
Под показателями удержания вы подразумеваете процент активных пользователей? Если это так, то это должно сработать
select 1.0 * (select count(id) from users where exists (select * from transactions where users.id = transactions.user_id and day(now()) = day(transactions.created_at))) / (select count(id) from users)
Комментарии:
1. спасибо за вашу помощь. Я начинаю это понимать. хорошего дня