Подсчет суммы уникальных счетов - PullRequest
0 голосов
/ 23 января 2020

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

Таблица содержит ACCOUNT_ID, и каждая учетная запись может иметь одну или несколько единиц оборудования, каждая единица оборудования будет иметь ряд связанных служб. Если Учетная запись имеет несколько служб, она будет состоять из нескольких записей, содержащих один и тот же ACCOUNT_ID, но с разными значениями услуг и стоимостью оборудования, поэтому, по сути, уникальная учетная запись может иметь множество записей. Я пытаюсь подсчитать количество сервисов на уровне аккаунта, а не на уровне оборудования.

Пытаясь использовать агрегированные функции, такие как SUM over (), я получаю правильное количество сервисов, но они не уникальны. на ACCOUNT_ID. В качестве базового c примера приведем некоторые данные;

ACCOUNT_ID  EQUIPMENT_ID    SERVICE_NAME
12345          101010        SERVICE1
12345          101010        SERVICE2
12346          102010        SERVICE1
12346          102011        SERVICE1
12347          103010        SERVICE1
12347          104010        SERVICE1
12347          104010        SERVICE2
12347          104010        SERVICE3
12347          104011        SERVICE1
12347          104011        SERVICE2
12347          104011        SERVICE3

Как указано выше, есть 3 уникальных аккаунта, поэтому я хотел бы, чтобы мои результаты выглядели ниже;

SERVICE1    3   
SERVICE2    2   
SERVICE3    1   

Что лучший способ достичь этого?

Большое спасибо

1 Ответ

1 голос
/ 23 января 2020

Вы можете использовать агрегацию и count(distinct):

select service_name, count(distinct account_id) cnt from mytable group by service_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...