Создание таблицы «вложений» покупок товара на основе общих записей клиентов - PullRequest
0 голосов
/ 19 сентября 2019

Я работаю над созданием представления для нашей базы данных (PostgreSQL 11.2 на x86_64-pc-linux-gnu).Наши аналитики обеспокоены «степенью привязанности» (т. Е. Клиентов, которые приобрели X, а также Y), я взломал, как это сделать «примитивным» способом, но он использует 3 CTE и работает не очень эффективно.

Начальными данными являются в основном данные расчета с полем для бизнес-сегмента (seg_lvl5_2), продукта (l3_prod_id), идентификатора и имени клиента, периода расчета (prod_yr_mth) и дохода (amt_eop).

+-----------------------+------------+---------+--------------------------------------+-------------+----------+
| seg_lvl5_2            | product    | cust_id | custname                             | prod_yr_mth | amt_eop  |
+-----------------------+------------+---------+--------------------------------------+-------------+----------+
| PUBLIC SECTOR         | 305        | PSANON  | NONASP                                | 201812     | 2.05     |
| SMALL MEDIUM BUSINESS | 305        | DCMA01  | POLINGER COMPANY                      | 201901     | 0.49     |
| SMALL MEDIUM BUSINESS | 5047       | GWFL03  | ERVING INDUSTRIES, INC.               | 201904     | 81.97    |
| LARGE ENTERPRISE      | 108        | KKMB01  | AMERISOURCE BERGEN                    | 201901     | 7,847.52 |
| LARGE ENTERPRISE      | 193        | QFKB01  | AMERICAN TIRE DISTRIBUTORS INC        | 201804     | 384.18   |
| SMALL MEDIUM BUSINESS | 431        | GSAB62  | CATHOLIC HEALTH CARE SERVICES         | 201811     | 2,002.58 |
| PUBLIC SECTOR         | 108        | HHBX01  | PRINCE GEORGE COUNTY - 911 (VA)       | 201807     | 110.79   |
| PUBLIC SECTOR         | 108        | DFDA01  | EVE TOWNSHIP HOUSING AUTHORITY (NJ)   | 201904     | 159.34   |
| LARGE ENTERPRISE      | 108        | AVAG42  | GENOA HEALTHCARE, LLC                 | 201906     | 0        |
| SMALL MEDIUM BUSINESS | 5666       | TGBB32  | NERDS IN THE CITY INC                 | 201807     | 42.34    |
| SMALL MEDIUM BUSINESS | 108        | GKMM44  | ARTHUR SCOTT ENTERPRISES, INC         | 201902     | 381      |
| LARGE ENTERPRISE      | 352        | ZREV01  | HUGHES, HOWARD MEDICAL INSTITUTE INC  | 201807     | 15       |
| SMALL MEDIUM BUSINESS | 108        | YOON44  | QUEST WORKSPACES 1395 BRICKELL LLC    | 201802     | 3,234    |
| LARGE ENTERPRISE      | 193        | BUHC01  | THE CHUBB GROUP                       | 201807     | 5        |
| SMALL MEDIUM BUSINESS | 108        | VAGB01  | HEBREW HOME FOR THE AGED AT RIVERDALE | 201803     | 0        |
| SMALL MEDIUM BUSINESS | 64         | QABM62  | LSC COMMUNICATIONS, INC.              | 201806     | 2,136.40 |
| SMALL MEDIUM BUSINESS | 305        | UKMC01  | WIMBERLY ALLISON TONG & GOO           | 201905     | 0.72     |
| LARGE ENTERPRISE      | 108        | JDGV01  | KIRKLAND & ELLIS                      | 201802     | 0        |
| SMALL MEDIUM BUSINESS | 108        | QYOV01  | JOHN VARVATOS ENTERPRISES INC         | 201802     | 0        |
| SMALL MEDIUM BUSINESS | 5251       | SVKA01  | TEMCO SERVICE INDUSTRIES INC          | 201811     | 0        |
| SMALL MEDIUM BUSINESS | 5251       | KWMQ02  | RAYMOND P MARZULLI CO INC             | 201806     | 9.99     |
| SMALL MEDIUM BUSINESS | 193        | YBZU01  | AUTOMATIC SPRINKLER COMPANY, INC      | 201901     | 0        |
| PUBLIC SECTOR         | 108        | KBJN62  | STATE OF NEW JERSEY                   | 201908     | 0        |
| SMALL MEDIUM BUSINESS | 305        | JZTJ02  | DENTAQUEST VENTURES LLC               | 201811     | 1.57     |
+-----------------------+------------+---------+---------------------------------------+------------+----------+

Конечный результат, который мне нужен, таков:

+------------+------------------+---------+-------------------+------------+-------------------+
| prod_yr_mth| seg_lvl5_2       | product | attaching_product | cust_count | attach_cust_count |
+------------+------------------+---------+-------------------+------------+-------------------+
| 201908     | LARGE ENTERPRISE | 3       | 3                 | 10         | 10                |
| 201908     | LARGE ENTERPRISE | 3       | 9                 | 10         | 2                 |
| 201908     | LARGE ENTERPRISE | 3       | 64                | 10         | 2                 |
| 201908     | LARGE ENTERPRISE | 3       | 105               | 10         | 3                 |
| 201908     | LARGE ENTERPRISE | 3       | 108               | 10         | 8                 |
| 201908     | LARGE ENTERPRISE | 3       | 193               | 10         | 10                |
| 201908     | LARGE ENTERPRISE | 3       | 305               | 10         | 10                |
| 201908     | LARGE ENTERPRISE | 3       | 5,737             | 10         | 1                 |
| 201908     | LARGE ENTERPRISE | 3       | 5,742             | 10         | 1                 |
| 201908     | LARGE ENTERPRISE | 3       | 5,760             | 10         | 1                 |
| 201908     | LARGE ENTERPRISE | 3       | 5,761             | 10         | 2                 |
| 201908     | LARGE ENTERPRISE | 3       | 6,144             | 10         | 2                 |
| 201908     | LARGE ENTERPRISE | 3       | 6,145             | 10         | 8                 |
| 201908     | LARGE ENTERPRISE | 3       | 6,146             | 10         | 7                 |
| 201908     | LARGE ENTERPRISE | 3       | 7,426             | 10         | 1                 |
| 201908     | LARGE ENTERPRISE | 9       | 3                 | 259        | 2                 |
| 201908     | LARGE ENTERPRISE | 9       | 9                 | 259        | 259               |
| 201908     | LARGE ENTERPRISE | 9       | 30                | 259        | 17                |
| 201908     | LARGE ENTERPRISE | 9       | 64                | 259        | 121               |
+------------+------------------+---------+-------------------+------------+-------------------+

Если продукт - это какой-то продукт, cust_count - это число уникальных cust_id, которые купили этот продукт в этом месяце, attachching_product:некоторый другой продукт, и attach_cust_count - это число клиентов, купивших продукт, которые также приобрели attachching_product (следовательно, дают нам «коэффициент привязанности»), эти данные сгруппированы по месяцам и бизнес-сегментам.

Мне удалось найти решение, которое в основном создает 3 временные таблицы, а затем выполняет окончательное объединение таблиц 2 и 3. Это работает, но я думаю, что оно медленное и неэффективное из-за всех объединений.Я могу поделиться запросом, который я создал, если это поможет (это довольно долго).Я чувствую, что должен быть простой способ написать этот запрос.

Спасибо!

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