每家企業的工齡工資演算法不同,所有根據各自的演算法自行修改,
需求: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 語句查詢再把結果匯出...