求实现工资上涨的SQL代码


一张工资表,共两个字段,员工编号和月工资字段。现由于物价上涨,公司为了提高员工薪水,将按如下规则对员工工资进行调整:­

月工资少于2000元的员工涨20%; ­

在2001元至3000元之间的员工涨15%; ­

在3001元至6000元的员工涨10%; ­

6000元以上的员工上涨工资5%. ­

要求:用存储过程完成本次工资调整,并计算出通过此次工资上调会给公司每月增加多少成本。 ­

作者: jackluangle   发布时间: 2011-06-11

SQL code
decalre @s1 dec(18,2),@s2 dec(18,2)
select @s1=sum(月工资字段) from tb

update 工资表
set 月工资字段=
  case 
    when 月工资字段<=2000 then 月工资字段*1.2
    when 月工资字段 between 2001 and 3000 then 月工资字段*1.15
    when 月工资字段 between 3001 and 6000 then 月工资字段*1.1
    else 月工资字段*0.05
  end

select @s2=sum(月工资字段) from tb

select @s2-@s1 as 每月增加成本

 

作者: FlySQL   发布时间: 2011-06-11

修正一个笔误,并提醒楼主,更新之前须备份好数据
SQL code
declare @s1 dec(18,2),@s2 dec(18,2)
select @s1=sum(月工资字段) from tb

update 工资表
set 月工资字段=
  case 
    when 月工资字段<=2000 then 月工资字段*1.2
    when 月工资字段 between 2001 and 3000 then 月工资字段*1.15
    when 月工资字段 between 3001 and 6000 then 月工资字段*1.1
    else 月工资字段*0.05
  end

select @s2=sum(月工资字段) from tb

select @s2-@s1 as 每月增加成本


作者: FlySQL   发布时间: 2011-06-11

月工资少于2000元的员工涨20%; ­

在2001元至3000元之间的员工涨15%; ­

在3001元至6000元的员工涨10%; ­

6000元以上的员工上涨工资5%. ­
这个可以用最简单的SQL来实现啊
select case when gongzi<=2000 esls gongzi+gongzi*20%
  when gongzi<=3000 and gongzi>2001 esls gongzi+gongzi*15%
  end gongzi from 表

其它的类似啊。

作者: zftang   发布时间: 2011-06-11

还是有笔误:) -- tb 应改为 工资表

作者: FlySQL   发布时间: 2011-06-11

引用 2 楼 flysql 的回复:
修正一个笔误,并提醒楼主,更新之前须备份好数据

SQL code
declare @s1 dec(18,2),@s2 dec(18,2)
select @s1=sum(月工资字段) from tb

update 工资表
set 月工资字段=
case
when 月工资字段<=2000 then 月工资字段*1.2
when 月工资字段 between ……


MYSQL数据库吧。。。。。。。。。

作者: zftang   发布时间: 2011-06-11