Проверка пользователей с "уникальными" ролями

Пользователь с "Уникальной" ролью - пользователь который в цепочке согласования промо по клиенту единственный с данной ролью. 
Например, для клиента Samokat Direct и роли Trade Marketing Manager содержится только один пользователь в цепочке согласования -  Kovaleva S.
Данная проверка необходима для напоминания пользователю о том, что перед отпуском необходимо оставить бэкап для этой роли для обеспечения возможности редактирования или предвидения промо для данного клиента.
 
 


Для данной проверки необходимы:

1) Доступ к NRM-PRD
2) Доступ к выгрузкам   Export all promo InPlan : 
 
 
Шаги проверки: 

Открываем DBeaver, по NRM-PRD нажимаем правой кнопкой мыши, выбираем SQL Editor -> Open SQL script 
 
 
Выбираем New script 
 
 

Вводим New Script: 

select

  paa.PromoGroupID

  --,paa.ActionUserID

  ,concat(us.lastname,' ',us.firstname,' ',us.middlename) as "Name"

  ,rl.name as role

  ,paa.OrderNum

  --,paa.PAApprovementStatusID

  ,pas.Code

  ,pas.Name

from nrm_core.PromoGroupApprovement_ft paa

left join nrm_core.PAApprovementStatus_ds  pas on paa.PAApprovementStatusID = pas.ID and pas.rowstatus = 1

left join nrm_core.users_ds us on paa.ActionUserID = us.ID and us.rowstatus = '1'

left join nrm_core.role_ds rl on rl.id = us.roleid and us.rowstatus = '1'

where  paa.OrderNum >'0' and paa.isCurrent =' 1'

--and paa.PromoGroupID = '8696'


Нажимаем Execute SQL query


 
 

Делаем выгрузку .csv полученного результата 

 
 
Открываем актуальную выгрузку Export all promo InPlan и копируем данные на новый лист выгрузки из NRM-PRD
 
 
На листе _select_paa_PromoGroupID_paa_Ac создаем новый столбец и вводим формулу =VLOOKUP(A2; 'all promo InPlan'!A:E; 5;0) 
Протягиваем ее для всего столбца и получаем столбец с клиентами промо. 
 
 
Далее, для каждой из ролей  стобца C - ROLE создаем отдельный лист и переносим туда данные по каждой роли на отдельные листы: 
 
 
На каждом из новых листов для столбца promogroupid делаем проверку на наличие дубликатов: 
 
 

Далее, отфильтровывыем значения, не имеющие дубликатов: 
 
 
Получили список уникальных ролей Trade Marketing Manager:
 
 

Повторяем для остальных ролей. 
Общий список уникальных ролей переносим на лист Result 
 
 
Удаляем дубликаты, чтобы получить список рассылки для пользователей 
 
 

Мы получили список пользователей с уникальными ролями. 

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

Во вложении пример письма рассылки