个人所得税计算函数的编写(plpgsql)

简介: 个人所得税计算函数的编写(plpgsql)

在工资管理软件中,要计算个人所有税。一般是通过公式在后台完成计算,这是多年以前写的代码,后来也有小的修改,哪位这个内容比较熟悉,请忙优化一下。

一、税率表

个人所得税税率表四

级数 平均每月收入 税率(%) 速算扣除数

1 不超过3,000元的部分 3 0

2 超过3,000元至12,000元的部分 10 210

3 超过12,000元至25,000元的部分 20 1410

4 超过25,000元至35,000元的部分 25 2660

5 超过35,000元至55,000元的部分 30 4410

6 超过55,000元至80,000元的部分 35 7160

7 超过80,000元的部分 45 15160

二、代码

CREATE OR REPLACE FUNCTION public.x9_grsds(
  jsze numeric)
    RETURNS numeric
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE PARALLEL UNSAFE
AS $BODY$
-- Description: 计算个税
-- 2011年9月1日起调整后,也就是2012年实行的7级超额累进个人所得税税率表
-- 应纳个人所得税税额= 应纳税所得额× 适用税率- 速算扣除数
-- 扣除标准3500元/月(2011年9月1日起正式执行)(工资、薪金所得适用)
-- 个税免征额3500元  (工资薪金所得适用)
-- 2019年新改 起征点为5000
DECLARE
  jsce decimal(18,2);
    yjse decimal(18,2);
BEGIN
  jsce = $1-5000.00;
  IF jsce <= 0 THEN
    BEGIN
       yjse = 0;
      RETURN yjse;
    END;
    END IF ;
  IF jsce <= 3000 THEN
    BEGIN
       yjse = jsce * 0.03;
      RETURN yjse;
    END;
    END IF ;
  IF jsce <= 12000 THEN
    BEGIN
       yjse = jsce * 0.10-210;
      RETURN yjse;
    END;
  END IF ;
  IF jsce <= 25000 THEN
    BEGIN
       yjse = jsce * 0.20-1410;
      RETURN yjse;
    END;
  END IF ;
  IF jsce <= 35000 THEN
    BEGIN
       yjse = jsce * 0.25-2660;
      RETURN yjse;
    END;
  END IF ;
  IF jsce <= 55000 THEN
    BEGIN
       yjse = jsce * 0.30-4410;
      RETURN yjse;
    END;
  END IF ;
  IF jsce <= 80000 THEN
    BEGIN
       yjse = jsce * 0.35-7160;
      RETURN yjse;
    END;
  END IF ;
  -- 大于80000
  yjse = jsce * 0.45-15160;
  RETURN yjse;
END;
$BODY$;
ALTER FUNCTION public.x9_grsds(numeric)
    OWNER TO postgres;

三、总结

谁有更好的代码,帮忙改一下吧!

相关文章
|
监控 Serverless 测试技术
函数计算的开发
函数计算的开发
63 0
|
Serverless 数据处理 Python
Python3,数据处理与计算,不得不掌握的高效计算函数之prod()函数,
Python3,数据处理与计算,不得不掌握的高效计算函数之prod()函数,
105 0
|
5月前
|
缓存 前端开发 Java
综合性练习(后端代码练习1)——加法计算器
综合性练习(后端代码练习1)——加法计算器
44 1
Hive学习---4、函数(单行函数、高级聚合函数、炸裂函数、窗口函数)(二)
Hive学习---4、函数(单行函数、高级聚合函数、炸裂函数、窗口函数)(二)
|
6月前
|
存储
中文助记符号生成函数的编写(plpgsql)
中文助记符号生成函数的编写(plpgsql)
|
SQL JSON Java
Hive学习---4、函数(单行函数、高级聚合函数、炸裂函数、窗口函数)(一)
Hive学习---4、函数(单行函数、高级聚合函数、炸裂函数、窗口函数)(一)
【SQL开发实战技巧】系列(二十七):数仓报表场景☞通过对移动范围进行聚集来详解分析函数开窗原理以及如何一个SQL打印九九乘法表
本篇文章讲解的主要内容是:***通过执行计划看开窗函数开窗语法rows\range between preceding and current row以及rows\range between unbounded preceding and unbounded following对移动范围的值进行聚集的原理以及区别】、如何通过一个SQL打印九九乘法口表!!!***
【SQL开发实战技巧】系列(二十七):数仓报表场景☞通过对移动范围进行聚集来详解分析函数开窗原理以及如何一个SQL打印九九乘法表
VBA 2000年之后活期存款利息计算
VBA 2000年之后活期存款利息计算
85 0
|
决策智能
运筹优化学习04:Lingo的sum函数和for函数的使用方法介绍
运筹优化学习04:Lingo的sum函数和for函数的使用方法介绍
运筹优化学习04:Lingo的sum函数和for函数的使用方法介绍
|
小程序 Python
【python学习小案例】提高兴趣之BMI计算器
✨前言 今天分享一个BMI指数计算小程序 可以使用自己编写的程序随时监测自己的BMI哦!!!
【python学习小案例】提高兴趣之BMI计算器