You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按员工统计项目经理变更次数的实现需求

按员工统计项目经理变更次数

原始数据

项目经理项目编号员工
A11
A21
B31
A41
B51
B61
A71
A81
B91
A12
B22
B32
A42
A52
B62
A72

期望结果

项目经理变更次数员工
51
42

需求说明

按员工维度统计其经历的项目经理变更次数,无需考虑项目的数量。

实现方案

方案1:SQL实现

利用窗口函数LAG获取同一员工上一个项目的项目经理,对比当前项目经理是否不同,最后汇总计数:

SELECT 
    SUM(CASE WHEN current_pm != previous_pm THEN 1 ELSE 0 END) AS 项目经理变更次数,
    员工
FROM (
    SELECT 
        `Project Manager` AS current_pm,
        LAG(`Project Manager`) OVER (PARTITION BY `Employee` ORDER BY `Project Num`) AS previous_pm,
        `Employee` AS 员工
    FROM 你的表名
) AS sub
GROUP BY 员工;

方案2:Python Pandas实现

通过分组移位对比项目经理的变化,再统计次数:

import pandas as pd

# 构造数据(实际场景可从文件/数据库读取)
data = {
    '项目经理': ['A','A','B','A','B','B','A','A','B','A','B','B','A','A','B','A'],
    '项目编号': [1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7],
    '员工': [1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2]
}
df = pd.DataFrame(data)

# 标记项目经理变更
df['上一项目经理'] = df.groupby('员工')['项目经理'].shift(1)
df['是否变更'] = df['项目经理'] != df['上一项目经理']

# 统计每个员工的变更次数
result = df.groupby('员工')['是否变更'].sum().reset_index()
result.columns = ['员工', '项目经理变更次数']
# 调整列顺序匹配期望结果
result = result[['项目经理变更次数', '员工']]

print(result)

内容的提问来源于stack exchange,提问作者Gines

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 12:55:39