查询出部门名称、部门的员工数、部门的平均工资、部门的最低收入雇员姓名和最高收入雇员的姓名

本文介绍如何使用Oracle SQL查询部门名称、员工数量、平均薪资,并找出部门中薪资最高和最低的员工姓名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如题:

查询出部门名称、部门的员工数、部门的平均工资、部门的最低收入雇员姓名和最高收入雇员的姓名

这是oracle的默认Scott用户下面的emp 和 dept 表间的一道思考题。

 雇员表(emp)

记录了每个雇员的基本信息

 

NO  字段         类型            描述

1     empno       Number(4)    雇员编号

2     ename       Varchar2(10)      雇员姓名

3     job         Varchar2(9)     工作职位

4     mgr       Number(4)           雇员的领导(经理)编号

5     hierdate      date          入职日期

6     sal          Number(7,2)    月薪/工资

7     comm        Number(7,2)    奖金

8     deptno        Number(2)      雇员所属部门的编号


 部门表(emp)

记录了每个部门的基本信息

 

NO  字段       类型             描述

1     deptno     Number(2)       部门编号(唯一)

2     dname     Varchar2(14)     部门名称

3     loc       Varchar2(13)     地址


分析:要查询出部门的员工数,平均工资,最低收入雇员姓名和最高收入雇员姓名,必须先知道部门的最高收入和最低收入


第一步:查询出部门名称,部门员工数,部门平均工资,部门最低收入和最高收入

[sql]  view plain  copy
  1. select deptno, count(*), avg(sal), min(sal), max(sal) from emp group by deptno;  


第二步:查询最低收入者的姓名

[sql]  view plain  copy
  1. select e.ename   
  2. from emp e, (select deptno, count(*), avg(sal), min(sal) min_sal, max(sal) max_sal from emp group by deptno) t   
  3. where e.deptno = e.deptno  
  4. and (e.sal = min_sal);  


同理,也可以查询最高收入者的姓名

[sql]  view plain  copy
  1. select e.ename   
  2. from emp e, (select deptno, count(*), avg(sal), min(sal) min_sal, max(sal) max_sal from emp group by deptno) t   
  3. where e.deptno = e.deptno  
  4. and (e.sal = max_sal);  


那如何同时查询最低收入者和最高收入者的姓名呢?


第三步:给第一次查询出来的部门最高收入和最低收入同时关联两张emp 表,分别获取最高收入者和最高收入者的姓名

[sql]  view plain  copy
  1. select d.dname, t.nu, t.avg_sal, t.min_sal, t.max_sal, e.ename, s.ename   
  2. from dept d, emp e, emp s ,  
  3. (select deptno, count(*) nu, avg(sal) avg_sal, min(sal) min_sal, max(sal) max_sal from emp group by deptno) t  
  4. where d.deptno = t.deptno   
  5. and (e.deptno = t.deptno and e.sal = t.min_sal)   
  6. and (s.deptno = t.deptno and s.sal = t.max_sal);  




实验2-2 结构化查询语言SQL基础 一、实验目的 ●了解SQL Server查询编辑器的启动,熟悉如何使用查询编辑器查询记录。 ●掌握SELECT语句的基本语法查询条件表示方法。 ●掌握GROUP BYORDER BY子句的作用使用方法。 ●掌握连接查询查询的使用方法。 二、实验内容 1.对上次实验1建立的表输入据(0表示男,1表示女): Employee表 Departments表 DepartmentID DepartmentName Note 1 财务部 财务部 2 研发部 研发部 3 人力资源部 人力资源部 Salary表 EmployeeID Income Outcome 1001 3600 1500 1002 3300 1000 1003 3700 1200 2001 4000 1600 2002 3800 1800 2003 3800 1500 3001 4200 2000 3002 4100 1800 2、练习下面简单的查询语句: a) 查询每个雇员的所有信息(列举一个即可)。 b) 查询每个雇员的地址电话(列举一个即可)。 c) 查询EmployeeID为1001的雇员的地址电话。 d) 查询雇员地址电话,并用AS子句将结果中各列的标题分别指定为 “地址”“电话”。 e) 计算每个雇员的实际收入。 f) 找所有姓王的雇员部门号。 3、练习多表连接查询嵌套查询: a)查询每个雇员的情况及工资情况(工资=Income-Outcome) b)查询财务部工资在2200元以上的雇员姓名及工资情况 c)查询研发部在1966年以前生的雇员姓名及其工资详情 d)查询人力资源部雇员最高最低工资 e)将各雇员的情况按工资由低到高排列 f)求各部门雇员 g)找所有在财务部人力资源部工作的雇员的编号 h)统计人力资源部工资在2500以上雇员的人 i)求财务部雇员的总人 j)求财务部雇员平均工资 k)查找比所有财务部的雇员工资都高的雇员姓名 l)查找财务部年龄不低于研发部所有雇员年龄的雇员姓名 m)查找在财务部工作的雇员的情况 三、实验报告要求 1、写上述查询任务相对应的SQL查询语句 2、记录在实验过程中遇到的问题、解决办法及心得体会
最新发布
04-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值