查询每个部门最低工资的雇员信息

本文介绍两种SQL方法查询每个部门最低工资的雇员信息:关联子查询法与IN关键字法,并对比分析两者差异及适用场景。

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

如题:

查询每个部门最低工资的雇员信息


关联子查询方法


1 查询每个部门的最低工资

select deptno, min(sal) min_sal from emp group by deptno;


2 同最低工资关联人员信息

select e.* from emp e, (select deptno, min(sal) min_sal from emp group by deptno) s
where e.deptno = s.deptno
and e.sal = s.min_sal;


in关键字方法


in关键字是这种场景容易想到的一个方法,先查询出部门的最低工资,然后匹配最低工资的雇员信息。


select * from emp where sal in (select min(sal) from emp group by deptno);


错误解析


in 方法存在一个问题,当两部门中有多个相同的工资值时会产生错误的结果


现在讲emp 中empno 为 1234 的用户部门修改为 20

update emp set deptno = 20 where empno = 1234;

然后再使用in查询方法查部门最低工资的员工信息


这时,empno 为 1234 的员工工资与deptno为10的部门最低工资相同,所以使用in查询就查出了这个最低工资。


但是使用 关联子查询 的方法查询,


综上比较,在类似的查询中,慎用in 关键字直接查询,而要使用关联子查询按部就班的来查。



实验2-2 结构化查询语言SQL基础 一、实验目的 ●了解SQL Server查询编辑器的启动,熟悉如何使用查询编辑器查询记录。 ●掌握SELECT语句的基本语法和查询条件示方法。 ●掌握GROUP BY和ORDER 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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值