1. 程式人生 > >第3章 SQL 習題 - 3.10

第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)