Как справиться с получением списка уникальных клиентов по группам товаров - PullRequest
0 голосов
/ 11 февраля 2019

Я использую SQL Server 2012.

Меня попросили предоставить распределение клиентов по группам продуктов.
Например, сколько клиентов имеют только продуктов и субпродуктовнабор A.

Сколько клиентов имеет только продуктов и субпродуктов. Набор A и B.

Сколько клиентов только получили продуктов и субпродуктовустановить B и C.

Я пытаюсь найти лучший способ решить эту проблему.У меня есть такая таблица:

|CustomerKey|  ProductCode |SubProductCode|
|-----------|--------------|--------------|
| ABC123    | PROD1        | SP1          |
| ABC123    | PROD1        | SP2          |
| ABC145    | PROD1        | SP1          |
| ABC157    | PROD3        | SP1          | 
| ABC157    | PROD2        | SP5          |
| ABC157    | PROD1        | SP2          |

Я хочу классифицировать своих клиентов, используя ProductCode и SubProductCode, например:

|ProductCode | SubProductCode|Category|
|------------|---------------|--------|
| PROD1      |SP1            | A      |
| PROD1      |SP2            | B      |
| PROD2      |SP5            | C      |
| PROD3      |SP1            | D      |

Вывод, который я хочу увидеть, выглядит следующим образом:

|Category| Number of customers with ONLY this|
|--------|-----------------------------------|
| A      |    1 (ABC145)                     |
| B      |    0                              |
| A & B  |    1 (ABC123)                     |
| C      |    0                              |
| B,C & D|    1 (ABC157)                     |

Обратите внимание, что мы не учли клиента ABC123 в категории A, поскольку у этого клиента есть оба продукта категории A & B.Точно так же, хотя у клиента ABC157 есть PROD2 и SP5 (категория C), этот клиент не включается в этот подсчет, поскольку у него также есть продукты других категорий.

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

|CustomerKey |PROD1 SP1 |PROD1 SP2|PROD2 SP5 |PROD3 SP1|
|------------|----------|---------|----------|---------|
|ABC123      | 1        | 1       |  0       |  0      |
|ABC145      | 1        | 0       |  0       |  0      |
|ABC157      | 0        | 1       |  1       |  1      |

Я бы тогда мог подсчитать поля.Этот подход имеет дополнительное преимущество, позволяя мне переопределить то, что делает категорию А в какой-то момент в будущем, и я просто настраиваю, какие столбцы я считаю.

Мой вопрос: как лучше всего достичь моей цели?Есть лучший способ сделать это?Я собираюсь написать около 150 описаний случаев для различных комбинаций продуктов и субпродуктов!

...