用SQL巧核社保养老保险企业职工个人缴费基数,本文主要内容关键词为:基数论文,养老保险论文,社保论文,企业职工论文,SQL论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。
基本养老保险费中个人缴纳的基本养老保险费以本人上年度月平均应发工资总额为缴费基数。在养老保险基金审计调查中,可以通过延伸调查参保企业,利用SQL数据库核查参保单位个人的缴费基数,从而发现少核缴费基数、擅自降低缴费比例和擅自减免社会保险费导致基金收入减少、缴费基数不真实的问题。
采集Excel表格
通过拷贝获取被调查单位职工上年度的工资表,格式为Excel电子表格,共十二个,每个月工资表以科室为单位,由相同字段但不连续的数据区域组成。要得到其中某一个职工的应付工资平均数,需分别打开十二个月的电子表格,找到相应的记录,复制其工资数,累加除以领取工资月份数后才能得到平均值。
导入SQL数据库
为了寻求更便捷的方法,审计人员尝试将一个月的电子表格数据导入SQL数据库中,同样的方法将十二个表格分别导入SQL数据库中。工资分表存放,给审计人员掌握和分析每个职工的应付工资全年情况带来障碍,因此在进行数据转换时必须将分布在多张表中的同一格式的数据合并,可采用SQL的union all子句进行十二个月的表的数据合并,并将其作为单个结果集返回(注意此处如用union将会删除重复行)如下语句:
select*into合并工资表from第1月工资表union all select*from第2月工资表union all select*from第3月工资表union al]select*from第4月工资表union all select*from 第5月工资表union all select*from第6月工资表union all select*from第7月工资表union all select*from第8月工资表union all select*from第9月工资表union all select*from 第10月工资表union all select*from第11月工资表union all select*from第12月工资表
数据分析
统计企业职工的上年度平均工资。合并工资表中有合并单元格的表头被拆成自然行,不连续的数据区域中间被null值填充,但由于每个职工的工资条还是独立而完整的记录,因此可以直接利用groupby子句按职工姓名进行分组统计。先用cast类型转换函数将字符型的应付工资转换为整型以便之后进行数值运算,用sum求和函数对同一职工的应付工资求和,用count计数函数计算姓名出现次数,即领取工资月数,具体实现语句如下:
select姓名,平均工资=sum(cast(应付工资as int))/count(*)into平均工资表from合并工资表group by姓名
将企业职工的平均工资与社保养老保险业务数据的个人缴费基数进行对比。由于社保中的个人缴费基数是带小数点的字符型数据,因此先用cast类型转换函数将其转换为小数类型。将上述平均工资表与社保个人缴费基数表以姓名相同为条件进行内连接,计算企业职工平均工资与个人缴费基数差,用如下语句实现:
select a.姓名,a.平均工资,b.个人缴费基数,基数差=平均工资-cast(个人缴费基数as decimal)into养老保险缴费基数对比from平均工资表a join社保个人缴费基数b on a.姓名=b.姓名