决定将薪金+公款<1500的员工加薪20%。获取该员工的名单将显示其当前的薪金+公款并进行修订

时间:2019-05-24 04:24:22

标签: sql

管理层已决定将薪金+公款为<= 1500的员工加薪20%,并将薪金+ comm> 1500的员工加薪10%

获取将显示其当前Salary + comm和修订后的Salary + comm的员工列表

SELECT first_name FROM employee
UPDATE employee SET salary=salary*20/100
WHERE (salary+comm)<1500

2 个答案:

答案 0 :(得分:1)

您的查询存在语法问题。您不能以尝试的方式同时使用SELECT和UPDATE。由于您只需要具有当前和递增薪水的员工列表,因此SELECT语句就足够了。

注意:请在脚本中包括employee_id列(如果可用),因为这样做的意义更大,因为多个雇员可以使用相同的名字。

SELECT 
first_name,
Salary as Current_Salary,
Comm as Commission,
(Salary + Comm) AS Salary_Plus_Commision,
CASE 
        WHEN (salary+comm) <= 1500 THEN Salary+(salary*20.0/100)
        ELSE Salary+(salary*10.0/100)
END New_Salary
FROM  employee

答案 1 :(得分:0)

您没有指定DBMS,但是在SQL中(如在“标准SQL”中一样),不可能将SELECT和UPDATE组合在一起。

但是,使用PostgreSQL,您可以执行以下操作:

UPDATE employee 
  SET salary = salary * case 
                          when salary + comm <= 1500 then 1.2
                          else 1.1
                        end
RETURNING employee_id, first_name, last_name, salary, salary + comm;

您还可以使用returning *仅显示所有列