У меня есть таблица, которая дает информацию о том, когда конкретный пользователь использовал предложение. Имеет 3 столбца
Date
: дата, когда было использовано предложение
user_id
: идентификатор для конкретного пользователя
txn_id
: идентификатор транзакции, когда пользователь использует предложение. Он всегда уникален в таблице.
Предложение таково, что конкретный пользователь может использовать его 5 раз.
Я хочу знать на каждую дату, сколько пользователей находятся на какой стадии использования предложения.
Например
В первый день может быть 3 пользователя, которые использовали предложение один раз (redemption_1), 2 пользователя, которые могли использовать предложение дважды (redemption_2).
Теперь во второй день могут быть пользователи первого дня (постоянные пользователи), а также пользователи, впервые обращающиеся за предложением (новые пользователи).
Для новых пользователей дня 2 логика такая же, как и у пользователей дня 1. (Может быть, 2 новых пользователя используют предложение 1 раз (redemption_1), 3 новых пользователя используют его 3 раза (redemption_3))
Но для постоянных пользователей теперь я хочу добавить туда использование предыдущего дня.
Например
В первый день 3 пользователя использовали предложение один раз (redemption_1), но во второй день, если они используют его еще раз, их следует учитывать в redemption_2 (а не в redemption_1, поскольку они используют его во второй раз с момента запуска предложения). / или там последнее использование)
Таким образом, я хочу продолжить кумулятивное добавление количества раз, когда пользователь использовал предложение, и подсчета количества пользователей, которые использовали предложение за 1 раз (redemption_1), 2 раза (redemption_2) и так далее для каждая дата
Таблица
+------------+---------+------------+
| Date | user_id | txn_id |
+------------+---------+------------+
| 2019-06-04 | 1 | 1ACSA0-ABA |
| 2019-06-04 | 2 | 1BEAA0-CSC |
| 2019-06-04 | 3 | 1AGHF0-CBA |
| 2019-06-04 | 1 | 1AVFA0-GAA |
| 2019-06-05 | 1 | 1BCFA0-AAA |
| 2019-06-05 | 1 | 1AVFB0-GAC |
| 2019-06-05 | 2 | 1AVFA0-GVA |
| 2019-06-05 | 4 | 1AVFA0-GVB |
| 2019-06-05 | 5 | 1AVFA0-BCF |
| 2019-06-06 | 6 | 1AGHF0-CCA |
| 2019-06-06 | 1 | 1BXHF0-CCA |
| 2019-06-06 | 2 | 1AGHF0-CBG |
| 2019-06-06 | 3 | 1AGHF0-CAW |
| 2019-06-06 | 2 | 1AGHF0-CTU |
+------------+---------+------------+
Желаемый выход
+------------+--------------+--------------+--------------+--------------+--------------+
| Date | redemption_1 | redemption_2 | redemption_3 | redemption_4 | redemption_5 |
+------------+--------------+--------------+--------------+--------------+--------------+
| 2019-06-04 | 2 | 1 | 0 | 0 | 0 |
| 2019-06-05 | 2 | 1 | 0 | 1 | 0 |
| 2019-06-06 | 1 | 1 | 0 | 1 | 1 |
+------------+--------------+--------------+--------------+--------------+--------------+
Я проведу вас по строкам вывода для лучшего понимания
В первой строке с датой 2019-06-04
есть два пользователя, которые использовали предложение один раз (2,3), и один пользователь, который использовал предложение дважды (1)
В строке с датой 2019-06-05
есть 2 пользователя, которые использовали предложение один раз (4,5). Обратите внимание, что они никогда не использовали предложение до этого, поэтому они учитываются как redemption_1
.
В той же строке есть 1 пользователь, который использовал предложение 2 раза (2: один раз на 2019-06-04
, а затем на 2019-06-05
), поэтому он считается redemption_2
В той же строке находится 1 пользователь, который использовал предложение 4 раза (1: дважды на 2019-06-04
, а затем снова дважды на 2019-06-05
), поэтому он считается redemption_4
И так далее для строки с датой 2019-06-06
Пожалуйста, дайте мне знать для любого разъяснения