SQL Получает количество пользователей и коэффициент удержания

#sql

#sql

Вопрос:

Я действительно новичок в SQL, поэтому я хочу начать изучать SQL. Здесь у меня есть 2 таблицы:

  1. Таблица пользователей имеет следующие атрибуты: идентификатор, имя, телефон и created_at
  2. Таблица транзакций имеет следующие атрибуты: идентификатор, идентификатор пользователя, сумма, created_at

Я хочу получить:

  1. Ежедневные, еженедельные и ежемесячные активные пользователи (активные пользователи-это пользователи, которые создают по крайней мере 1 транзакцию в этот день).
  2. Еженедельный и ежемесячный коэффициент удержания

У вас есть какие-нибудь идеи, как решить эту проблему, чтобы я мог попробовать?

Спасибо

Ответ №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. спасибо за вашу помощь. Я начинаю это понимать. хорошего дня