posgresql 計算工齡工資

2021-09-24 11:23:55 字數 1858 閱讀 1883

每家企業的工齡工資演算法不同,所有根據各自的演算法自行修改,

需求:1.工齡基數可設定修改,(假設為每年漲200)

2.當月的1號到30號,滿一年,則次月開始算工齡工資,所以在次月的下乙個月工資發放時才有算工齡工資

假設 3月1日滿一年,則4月份開始有加工齡工資,所有5月發工資時才有發到工齡工資。

3.每月1號定時跑批。

sql:

--判斷該臨時表是否存在

drop table  if exists tmp_emp_basic_salary;

--建立臨時表

create temporary table tmp_emp_basic_salary as

select 

a.work_age_start_date as "age_start",--工齡起算日期

a.id as "emp_id",--員工id

b.prm_value as "work_salary",--工齡工資基數(假設每年漲200基數)

extract(year from age(current_date,a.work_age_start_date)) as "work_age",--計算工齡的年 基數

current_date as "now_date"--當前時間

from  

hr.hr_employee a

left join hr.hr_sys_param b on a.affiliation = b.affiliation and a.del_flag='0' and prm_name='seniority_wage'

where a.del_flag = '0'

and a.work_status <> '04'

--算工齡必須大於等於1年,這樣才有工齡

--算入職時間和當前時間比較,必須在滿一年後2個月才開始算工齡工資,(這個可以根據自己的業務需求計算)

and extract( year from age( date_trunc('month',current_date),

date_trunc('month',a.work_age_start_date)+ interval '2 month' ) ) >=1;

註解:1.date_trunc:截斷日期型別函式date_trunc(text,time/timestamp/timestamptz);

select date_trunc('month',now());--每個月的1號

date_trunc('month',a.work_age_start_date)+ interval '2 month' ) --入職那個月的1號,後兩個月發工資

2.age(timstamp,timestamp):返回乙個時間差,例如年齡,第乙個時間減去第二個時間.如果第乙個引數不寫,那麼預設是當前時間,第二個引數需要格式為timestamp型別

select extract(year from now());--取當前年
如果不建立臨時表也是一樣的,

修改對應的工資表,相關資料

update hr.hr_basic_welfare set

work_age_salary = (a.work_salary:: integer  *work_age:: integer),--工齡工資,基數*年數

welfare_allow_total = contract_allowance+ tech_allowance +other_welfare+ (a.work_salary:: integer  *work_age:: integer)

from tmp_emp_basic_salary a 

where a.emp_id = hr.hr_basic_welfare.employee_id;

可以根據自己的需求制定演算法

工齡計算方案

根據需求不同,一般工齡計算會有兩種方案,一種是直接以天數表示,一種是以年月日的格式表示。兩種情況的計算的方式不同,所以整理記錄一下。1 以天數的表示方式 思路 直接用兩個日期相減,得到天數即可 1 from datetime import datetime23 4def cal working ag...

如何使用excel計算工齡

今天一位搞財務的mm問我excel計算工齡的問題,我想了想,還真不會啊。搞測試的,寫case,報進度,統計bug一般都是用excel,還真沒弄過計算工齡日期生日之類的。她的要求是 居然不會,想了半天想到2個方案 1 用perl寫個指令碼給她 2 把資訊匯入資料庫,用select 語句查詢再把結果匯出...

如何使用excel計算工齡

今天一位搞財務的mm問我excel計算工齡的問題,我想了想,還真不會啊。搞測試的,寫case,報進度,統計bug一般都是用excel,還真沒弄過計算工齡日期生日之類的。她的要求是 居然不會,想了半天想到2個方案 1 用perl寫個指令碼給她 2 把資訊匯入資料庫,用select 語句查詢再把結果匯出...