首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在20%的增量中获得员工ID以及在Sql/Python中获得的加薪次数

如何在20%的增量中获得员工ID以及在Sql/Python中获得的加薪次数
EN

Stack Overflow用户
提问于 2022-06-10 11:16:24
回答 1查看 93关注 0票数 1

我有一张表的数值如下:-

我想用python/pyspark编写一个代码,在这里我需要找到得到20%或更多加薪的员工代码。另外,我需要他得到多少次的加薪。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-10 11:55:20

使用窗口函数。

代码语言:javascript
复制
w=Window.partitionBy('emp_id').orderBy(to_date('salary_month_year'))
df1 = (df.withColumn('new_salary',lag('salary').over(w)).fillna(0)#Find previous salary in each row
         .withColumn('%increase', when(col('new_salary')==0,0)
         .otherwise(round((col('salary')-col('new_salary'))/col('salary'),1)*100))#Where group starts make it 0, and rest compute increment
          .withColumn('incr_count',sum((col("%increase")>0).cast('int')).over(w))#Compute increment count
          .where(col("%increase")>20).drop('new_salary')#Filter where salary >20% and drop unwanted column
      ).show()


+------+-----------------+------+---------+----------+
|emp_id|salary_month_year|salary|%increase|incr_count|
+------+-----------------+------+---------+----------+
|     1|           Mar-22|   400|     50.0|         2|
|     1|           Apr-22|   550|     30.0|         2|
|     2|           Feb-22|   500|     30.0|         1|
|     4|           Feb-22|   800|     30.0|         1|
+------+-----------------+------+---------+----------+
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72573404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档