Я работаю над созданием представления для нашей базы данных (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. Это работает, но я думаю, что оно медленное и неэффективное из-за всех объединений.Я могу поделиться запросом, который я создал, если это поможет (это довольно долго).Я чувствую, что должен быть простой способ написать этот запрос.
Спасибо!