SQL Server: подсчет отдельных, затем объединение нескольких полей - PullRequest
0 голосов
/ 20 марта 2019

Таблица базы данных SQL Server имеет следующие столбцы:

  • [company]: название компании, отправляющей электронную почту
  • [email1]: основной получатель электронной почты
  • [email2]: вторичный получатель электронной почты (обнуляемый)

В базе данных сотни уникальных компаний.

Я бы хотел посчитать, сколько уникальных идентификаторов электронной почты превышает [email1] и [email2] в совокупности [company] отправил электронные письма.

Редактировать: добавлен пример таблицы ниже, обратите внимание, что идентификатор электронной почты, который появляется в [email1] в одном сообщении, может появляться в [email2] в другом и наоборот.версия:

company         email1              email2
---------------------------------------------------
company1        person1@abc.com     person2@abc.com
company1        person2@abc.com     person3@abc.com
company2        person1@xyz.com     person2@xyz.com
company2        person1@123.com     person2@123.com

Таким образом, результат должен выглядеть следующим образом:

company         numUniqueEmails
---------------------------------
company1        3
company2        4

1 Ответ

0 голосов
/ 20 марта 2019

Вы можете использовать этот запрос для подсчета уникального идентификатора электронной почты для каждой компании:

select company, count(*) numUniqueEmails
from (
  select distinct company, email1 from tablename
  union
  select distinct company, email2 from tablename
) tbl
group by company

Тот же результат может быть достигнут при использовании CTE:

with cte
as (
  select distinct company, email1  from tablename
  union
  select distinct company, email2 from tablename
)
select company, count(*) numUniqueEmails 
from cte
group by company
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...