Как получить отчет о хранении через SQL?Или это быстрее, используя другой язык? - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть вопрос о степени удержания.
У меня есть 2 таблицы, включая данные клиента и данные заказа.

DISTRIBUTOR as d
+---------+-----------+--------------+--------------------+
|   ID    | SETUP_DT  | REINSTATE_DT | LOCAL_REINSTATE_DT |
+---------+-----------+--------------+--------------------+
| C111111 | 2018/1/1  | Null         | Null               |
| C111112 | 2015/12/9 | 2018/10/25   | 2018/10/25         |
| C111113 | 2018/10/1 | Null         | Null               |
| C111114 | 2018/10/6 | 2018/12/14   | 2018/12/14         |
+---------+-----------+--------------+--------------------+
ORDER as o, please noted that the data is for reference...
+---------+----------+-----+
|   ID    |  ORD_DT  | OAL |
+---------+----------+-----+
| C111111 | 2018/1/1 | 112 |
| C111111 | 2018/1/1 | 100 |
| C111111 | 2018/1/1 | 472 |
| C111111 | 2018/1/1 | 452 |
| C111111 | 2018/1/1 | 248 |
| C111111 | 2018/1/1 | 996 |
+---------+----------+-----+
The 3rd Table in my mind to create the retention rate report
+---------+-----------+-----------+---------------+-----------+
|   ID    |  APP_MON  | ORDER_MON | TimeDiff(Mon) | TTL AMT   |
+---------+-----------+-----------+---------------+-----------+
| C111111 | 2018/1/1  | 2018/1/1  |             - |  25,443   |
| C111111 | 2018/1/1  | 2018/2/1  |             1 |  7,610    |
| C111111 | 2018/1/1  | 2018/3/1  |             2 |  20,180   |
| C111111 | 2018/1/1  | 2018/4/1  |             3 |  22,265   |
| C111111 | 2018/1/1  | 2018/5/1  |             4 |  34,118   |
| C111111 | 2018/1/1  | 2018/6/1  |             5 |  19,523   |
| C111111 | 2018/1/1  | 2018/7/1  |             6 |  20,220   |
| C111111 | 2018/1/1  | 2018/8/1  |             7 |  2,006    |
| C111111 | 2018/1/1  | 2018/9/1  |             8 |  15,813   |
| C111111 | 2018/1/1  | 2018/10/1 |             9 |  16,733   |
| C111111 | 2018/1/1  | 2018/11/1 |            10 |  20,973   |
| C111112 | 2018/10/1 | 2017/11/1 |             - |  516      |
| C111112 | 2018/10/1 | 2018/10/1 |             - |  1        |
| C111113 | 2018/10/1 | Null      |             - | Null      |
| C111114 | 2018/12/1 | Null      |             - | Null      |
+---------+-----------+-----------+---------------+-----------+

Definition:
- APP_MON: the month that the customer joined, which is the max date from the start date of [d.SETUP_DT], [d.REINSTATE_DT] and [d.LOCAL_REINSTATE_DT]
- ORD_MON: the month that the customer purchased, which is the start date of the order date month
- TimeDiff: The duration by month between APP_MON and ORD_MON, e.g. if A's ODR_MON is 2018/1/1 and A'S APP_MON is 2018/2/1, the duration is 1.
- TTL_AMT: the total order amount that the customer bought in the related order date month

Что я действительно хочу, так это удержаниеотчет ниже, а ось x - это TimeDiff ...

+-----------+-----+------------+--------------+------+------+------+------+------+------+------+------+------+------+----+----+
|  APP_MON  | New | New Active | New Active % |  1   |  2   |  3   |  4   |  5   |  6   |  7   |  8   |  9   |  10  | 11 | 12 |
+-----------+-----+------------+--------------+------+------+------+------+------+------+------+------+------+------+----+----+
| 2018/1/1  |   1 |          1 | 100%         | 100% | 100% | 100% | 100% | 100% | 100% | 100% | 100% | 100% | 100% | 0% | 0% |
| 2018/2/1  |   0 |          0 | -            | 0%   | 0%   | 0%   | 0%   | 0%   | 0%   | 0%   | 0%   | 0%   | 0%   | 0% |    |
| 2018/3/1  |   0 |          0 | -            | 0%   | 0%   | 0%   | 0%   | 0%   | 0%   | 0%   | 0%   | 0%   | 0%   |    |    |
| 2018/4/1  |   0 |          0 | -            | 0%   | 0%   | 0%   | 0%   | 0%   | 0%   | 0%   | 0%   | 0%   |      |    |    |
| 2018/5/1  |   0 |          0 | -            | 0%   | 0%   | 0%   | 0%   | 0%   | 0%   | 0%   | 0%   |      |      |    |    |
| 2018/6/1  |   0 |          0 | -            | 0%   | 0%   | 0%   | 0%   | 0%   | 0%   | 0%   |      |      |      |    |    |
| 2018/7/1  |   0 |          0 | -            | 0%   | 0%   | 0%   | 0%   | 0%   | 0%   |      |      |      |      |    |    |
| 2018/8/1  |   0 |          0 | -            | 0%   | 0%   | 0%   | 0%   | 0%   |      |      |      |      |      |    |    |
| 2018/9/1  |   0 |          0 | -            | 0%   | 0%   | 0%   | 0%   |      |      |      |      |      |      |    |    |
| 2018/10/1 |   2 |          1 | 50%          | 0%   | 0%   | 0%   |      |      |      |      |      |      |      |    |    |
| 2018/11/1 |   0 |          0 | -            | 0%   | 0%   |      |      |      |      |      |      |      |      |    |    |
| 2018/12/1 |   1 |          0 | 0%           | 0%   |      |      |      |      |      |      |      |      |      |    |    |
+-----------+-----+------------+--------------+------+------+------+------+------+------+------+------+------+------+----+----+

Я понятия не имею, как получить отчет о сохранении данных.Мне действительно нужна третья таблица, чтобы получить отчет об удержании?Должен ли я сделать это в SQL, или вытащить данные и сделать это в Tableau или использовать другие языки?Какой способ более эффективен?Кто-нибудь может помочь?Благодаря.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...