第3章 SQL 习题 - 3.10

3.10 考虑3.9中的关系数据库,给出下面每个查询的SQL表达式:

a.修改数据库使'Jones'现在居住在'Newtown'市。

update employee set city = 'Newtown' where employee_name = 'Jones';

b.为'公司_1'所有工资不超过100000美元的经理增长10%的工资,对工资超过100000美元的只增长3%。

先看看'公司_1'中的所有经理的工资情况吧。

select distinct manager_name, salary from works, managers 
where company_name = '公司_1' and works.employee_name = managers.manager_name;
 manager_name | salary  
--------------+---------
 雇员_2       | 9000.00
(1 row)

看来按照题目要求,雇员_2应该增长10%的工资,工资应该变为9900。

with manager(manager_name, manager_salary) as (
select distinct manager_name, salary from works, managers 
	where company_name = '公司_1' and works.employee_name = managers.manager_name
) update works set salary = case
							when salary <=100000 then salary * 1.1
							else salary * 1.03
							end
				from manager
				where works.employee_name = manager.manager_name;

执行后咱们查一查雇员_2的工资增长情况:

select manager_name, salary from works natural join managers
where company_name = '公司_1' and works.employee_name = manager_name;
 manager_name | salary  
--------------+---------
 雇员_2       | 9900.00
(1 row)

猜你喜欢

转载自blog.csdn.net/zhangyingli/article/details/84136492
今日推荐