第3章 SQL 习题 - 3.16

本章节探讨了如何使用SQL查询从雇员数据库中获取特定信息,包括:找出在'First Bank Corporation'工作的雇员;查找居住城市与公司城市相同的雇员;识别住址与经理相同的雇员;筛选出工资高于公司平均工资的雇员;以及确定工资总额最低的公司。
部署运行你感兴趣的模型镜像

3.16 考虑图3-20中的雇员数据库,其中加下划线的是主码。给出下面每个查询对应的SQL表达式:

a.找出所有为"First Bank Corporation"工作的雇员名字。

数据库表的关系请参考习题3-9。根据我们的数据,现在我们找出“公司_1”的所有雇员吧。

select employee_name from works where company_name = '公司_1';
 employee_name 
---------------
 雇员_1
 雇员_2
(2 rows)

b.找出数据库中所有居住城市和公司所在城市相同的雇员。

select E.employee_name, C.company_name, E.city from 
(employee as E natural join works) join company as C using (company_name, city);
 employee_name | company_name |  city  
---------------+--------------+--------
 雇员_1        | 公司_1       | 城市_1
 雇员_3        | 公司_2       | 城市_2
 雇员_4        | 公司_2       | 城市_2
 雇员_5        | 公司_3       | 城市_3
 雇员_6        | 公司_3       | 城市_3
 雇员_2        | 公司_1       | 城市_1
(6 rows)

c. 找出数据库中所有居住的街道和城市与其经理相同的雇员。

select employee_name, manager_name from
employee natural join managers as M where (street, city) in (
	select street, city from employee where employee.employee_name = M.manager_name
);
 employee_name | manager_name 
---------------+--------------
 雇员_1        | 雇员_2
 雇员_2        | 雇员_2
 雇员_3        | 雇员_4
 雇员_4        | 雇员_4
 雇员_5        | 雇员_6
 雇员_6        | 雇员_6
(6 rows)

d.找出工资高于其所在公司雇员平均工资的所有雇员。

with avg_salary(company_name, avg_salary) as (
	select company_name, cast (avg(salary) as numeric(18, 2)) from works
	group by company_name
)
select employee_name, salary, avg_salary from
works join avg_salary using (company_name) where salary > avg_salary;
 employee_name |  salary  | avg_salary 
---------------+----------+------------
 雇员_4        | 11000.00 |   10500.00
 雇员_6        | 13000.00 |   12500.00
 雇员_2        |  9900.00 |    8950.00
(3 rows)

e.找出工资总和最小的公司。

with salary_sum(company_name, salary_sum) as (
	select company_name, sum(salary) from works
	group by company_name
) select min(salary_sum) from
salary_sum ;--group by company_name;
   min    
----------
 17900.00
(1 row)

 

您可能感兴趣的与本文相关的镜像

Wan2.2-T2V-A5B

Wan2.2-T2V-A5B

文生视频
Wan2.2

Wan2.2是由通义万相开源高效文本到视频生成模型,是有​50亿参数的轻量级视频生成模型,专为快速内容创作优化。支持480P视频生成,具备优秀的时序连贯性和运动推理能力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值