sql 语句 在所有部门中查询薪金最高或最低的雇员的信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 语句 在所有部门中查询薪金最高或最低的雇员的信息相关的知识,希望对你有一定的参考价值。

rt
表结构见下面。
1楼你等于没有说,谁不知道要用max min。
2楼 我照你的做了,可是它说from后面有无效字段,可能它不能识别top 1 这个东西,我用的是oracle 10g xe 在linux下的版本
3楼 group by 前面的只能是聚集函数,至少我的系统中是这个样子的。你那么写是提示错误的。

简单说就是先抽出部门号和最高(低)薪金,然后用这两个字段去JOIN原表,得到员工(可能不止一个)
语句如下:

SELECT T1.*
FROM Employee AS T1
INNER JOIN
(
SELECT MAX(salary) MAXsalary , Department_id
FROM Employee
GROUP BY Department_id
) T2
ON T1.Department_id = T2.Department_id
AND T1.salary = T2.MAXsalary
参考技术A --每个部门最大
SELECT TA.*
FROM Employee AS TA
WHERE Employee_ID IN
(
SELECT top 1 Employee_ID
FROM Employee AS TB
WHERE TA.Department_id = TB.Department_id
ORDER BY salary desc
)
--每个部门最小
SELECT TA.*
FROM Employee AS TA
WHERE Employee_ID IN
(
SELECT top 1 Employee_ID
FROM Employee AS TB
WHERE TA.Department_id = TB.Department_id
ORDER BY salary ASC
)
参考技术B select 部门字段名,max(薪金字段名) from 表名 group by 部门字段名 我用的是mysql的。。那个我不知道了 参考技术C max
min
不懂问我!

尚观干货Oracle数据库查询命令


--1、选择部门30中的雇员。


select * from emp where deptno=30


--2、列出所有办事员的姓名、编号和部门。“CLERK”


select ename,empno,deptno from emp where job='CLERK'


--3、找出佣金高于薪金的雇员


select * from emp where comm>sal


--4、找出佣金高于薪金60%的雇员


select * from emp where comm>(sal*0.6)


--5、找出部门10中所有经理和部门20中所有办事员的详细资料


select * from emp where (deptno=10 and job='MANAGER') or (deptno=20 and job='CLERK')


--6、找出部门10中所有经理、部门20中所有办事员以及既不是经理又不是办事员但其薪金大于或等于2000的所有雇员的详细资料


select * from emp where (deptno=10 and job='MANAGER') or (deptno=20 and job='CLERK')


or (deptno=20 and ((job!='MANAGER' and job!='ANALYST')and sal>=2000))


--7、找出收取佣金的雇员的不同工作


select distinct job from emp where comm is not null


--8、找出不收取佣金或收取的佣金低于100的雇员


select ename,comm from emp where comm is null or comm<100


--9、找出各月最后一天受雇的所有雇员


select ename from emp where last_day(hiredate)=hiredate


--10、找出早于12年之前受雇的雇员


select ename,to_char(hiredate,'yyyy') from emp where (to_char(sysdate,'yyyy')-to_char(hiredate,'yyyy'))>12


--11、显示只有首字母大写的所有雇员的姓名


select ename from emp where initcap(lower(ename))=ename


--12、显示正好为15个字符的雇员的姓名


select ename from emp where length(ename)=15


--13、显示不带有"R"的雇员姓名


select ename from emp where instr(ename,'R')=0


--14、显示所有雇员的姓名的前三个字符


select substr(ename,1,3) from emp


--15、显示所有雇员的姓名,用"a"替换所有的"A"


select replace(ename,'A','a')from emp


--16、显示所有雇员的姓名以及满10年服务年限的日期


select ename,hiredate from emp where (to_char(sysdate,'yyyy')-to_char(hiredate,'yyyy'))>=10


--17、显示雇员的详细资料,按姓名排序


select * from emp order by ename


--18、显示雇员姓名,根据其服务年限,将最老的雇员排在最前面。


select ename,hiredate from emp order by hiredate Asc


--19、显示所有雇员的姓名、工作和薪金,按工作内的工作的降序顺序排序,而工作按薪金排序


select ename,job,sal from emp order by job Desc,sal


--20、显示所有雇员的姓名和加入公司的年份和月份,按雇员受雇日所在月排序,并将最前年份的排在最前面


select ename,to_char(hiredate,'yyyy-mm') from emp order by to_char(hiredate,'mm')


【尚观干货】Oracle数据库查询命令

尚观10月以下课程火热招生中

linux运维+Oracle数据库

java+大数据开发

嵌入式底层驱动开发

VR开发

详情咨询QQ:2923605081

【尚观干货】Oracle数据库查询命令

扫描二维码

关注更多精彩

戳原文,更有料!

以上是关于sql 语句 在所有部门中查询薪金最高或最低的雇员的信息的主要内容,如果未能解决你的问题,请参考以下文章

Mysql练习题13道(21-33题)

SQL视图查询语句

Oracle的sql语句上机练习和答案

如何用oracle查询出部门名称,部门员工数,部门平均工资,部门最低工资雇员的姓名,及工资等级

Oracle的sql语句上级练习和答案

2017-07-20