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

如何用SQL/Python/PySpark统计薪资涨幅≥20%的员工ID及涨薪次数

员工涨薪统计实现方案

首先约定员工薪资流水表核心字段(对齐通用薪资表结构):

  • emp_id:员工唯一标识ID
  • salary:当期实际发放薪资金额
  • pay_date:薪资发放日期,用于判定薪资调整的先后顺序

核心逻辑:按员工维度分组,按发薪时间排序取上一期薪资作为涨薪计算基数,当期涨幅 =(当期薪资 - 上期薪资)/ 上期薪资,再基于涨幅阈值做筛选统计。


PySpark 实现代码

from pyspark.sql import Window
import pyspark.sql.functions as F

# 读取薪资表数据,替换为实际数据源读取逻辑即可(支持读Hive表、CSV、Parquet等格式)
salary_df = spark.table("employee_salary")

# 定义窗口规则:同一员工按发薪日期从早到晚排序
emp_window = Window.partitionBy("emp_id").orderBy("pay_date")

# 计算每条薪资记录对应的上期薪资、当期涨薪幅度
salary_calc_df = salary_df.withColumn(
    "prev_salary",
    F.lag("salary", 1).over(emp_window)
).withColumn(
    "growth_rate",
    (F.col("salary") - F.col("prev_salary")) / F.col("prev_salary")
)

# 需求1:筛选出单次薪资涨幅≥20%的员工ID(去重)
qualified_emp_df = salary_calc_df.filter(
    F.col("growth_rate") >= 0.2
).select("emp_id").distinct()

# 需求2:统计符合条件的员工累计获得≥20%幅度涨薪的总次数
rise_count_df = salary_calc_df.filter(
    F.col("growth_rate") >= 0.2
).groupBy("emp_id").agg(
    F.count("*").alias("high_rise_total_times")
)

# 输出结果,可根据需要替换为写入表/文件的逻辑
# qualified_emp_df.show()
# rise_count_df.show()

SQL 实现参考

逻辑和PySpark版本完全一致,基于窗口函数实现:

-- 需求1:查询单次涨薪≥20%的员工ID
SELECT DISTINCT emp_id
FROM (
    SELECT
        emp_id,
        (salary - LAG(salary, 1) OVER(PARTITION BY emp_id ORDER BY pay_date)) 
        / LAG(salary, 1) OVER(PARTITION BY emp_id ORDER BY pay_date) AS growth_rate
    FROM employee_salary
) t
WHERE growth_rate >= 0.2;

-- 需求2:统计每位符合条件员工累计≥20%涨薪的次数
SELECT
    emp_id,
    COUNT(1) AS high_rise_total_times
FROM (
    SELECT
        emp_id,
        (salary - LAG(salary, 1) OVER(PARTITION BY emp_id ORDER BY pay_date)) 
        / LAG(salary, 1) OVER(PARTITION BY emp_id ORDER BY pay_date) AS growth_rate
    FROM employee_salary
) t
WHERE growth_rate >= 0.2
GROUP BY emp_id;

说明:上述逻辑自动过滤了每个员工的第一条薪资记录(无上期薪资,不存在涨薪对比基准),如果业务规则需要将入职定薪纳入特殊涨薪统计,可自行调整判断逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 13:27:17