基于员工姓名去重统计各年度公司活跃员工数的技术需求
按年度统计去重后的活跃员工总数解决方案
根据你的业务场景,核心需求是同一员工无论服务多少个活跃客户,每年仅计为1次活跃,以下是不同工具下的具体实现方法:
SQL 实现
假设你的数据表名为employee_service_records,已包含Full_Name、ACTIVE_2020、ACTIVE_2021、ACTIVE_2022列(活跃标记为1,非活跃为0):
-- 第一步:按员工聚合,判断每个员工各年度是否至少有一个活跃客户 WITH employee_yearly_status AS ( SELECT Full_Name, MAX(ACTIVE_2020) AS is_active_2020, MAX(ACTIVE_2021) AS is_active_2021, MAX(ACTIVE_2022) AS is_active_2022 FROM employee_service_records GROUP BY Full_Name ) -- 第二步:统计各年度活跃员工总数 SELECT SUM(is_active_2020) AS total_active_2020, SUM(is_active_2021) AS total_active_2021, SUM(is_active_2022) AS total_active_2022 FROM employee_yearly_status;
逻辑说明:MAX(ACTIVE_XXXX)会取该员工年度内所有客户记录的活跃标记最大值,只要有一个客户活跃,结果就是1;之后对所有员工的活跃状态求和,得到的就是去重后的年度活跃员工数。
Excel 实现(适用于Excel 365/2021)
- 提取唯一员工名单:
在空白单元格输入公式:=UNIQUE(A:A) -- 假设Full_Name在A列 - 统计2020年活跃员工数:
在另一单元格输入公式:=ROWS(FILTER(UNIQUE(A:A), COUNTIFS(A:A, UNIQUE(A:A), D:D, 1)>=1)) -- 假设ACTIVE_2020在D列 - 同理修改列号,生成2021、2022年的统计公式。
逻辑说明:COUNTIFS判断每个唯一员工是否有至少一条活跃记录,FILTER筛选出符合条件的员工,ROWS统计筛选结果的行数即活跃员工总数。
Power BI 实现
创建三个度量值分别统计各年度活跃员工数:
-- 2020年活跃员工数 Active Employees 2020 = COUNTROWS( FILTER( VALUES('员工服务记录'[Full_Name]), CALCULATE(MAX('员工服务记录'[ACTIVE_2020])) = 1 ) ) -- 2021年活跃员工数 Active Employees 2021 = COUNTROWS( FILTER( VALUES('员工服务记录'[Full_Name]), CALCULATE(MAX('员工服务记录'[ACTIVE_2021])) = 1 ) ) -- 2022年活跃员工数 Active Employees 2022 = COUNTROWS( FILTER( VALUES('员工服务记录'[Full_Name]), CALCULATE(MAX('员工服务记录'[ACTIVE_2022])) = 1 ) )
逻辑说明:VALUES('员工服务记录'[Full_Name])获取所有唯一员工,CALCULATE(MAX(...))判断该员工年度内是否有活跃客户,COUNTROWS统计符合条件的员工数量。
内容的提问来源于stack exchange,提问作者BigPicture
相关产品推荐
相关产品推荐

