ORACLE查询

--oracle查询练习--


--1.  查询工资大于12000的员工姓名和工资
select ename,sal from emp where sal>1200; 
--2.  查询员工号为176的员工的姓名和部门号
select ename,deptno from emp where empno=4600;
--3. 选择工资不在5000到12000的员工的姓名和工资
select ename,sal from emp where sal<5000 or sal>12000;
--选择雇用时间在1908-02-01到1908-05-01之间的员工姓名,job_id和雇用时间
select * from emp where hiredate between to_date('2017-02-01') and to_date('2017-12-01');
-- 选择在20或50号部门工作的员工姓名和部门号
select ename,deptno from emp where deptno in(2,5);
--6. (重点) 查询在2016年雇用的员工的姓名和雇用时间
select ename,sal from emp where to_char(hiredate,'yyyy-mm-dd') like '2016%';
select ename,sal from emp where hiredate like '2016%';
select * from emp where hiredate between '2016-01-01' and '2016-12-30';
--7.(重点)  查询公司中没有管理者的员工姓名及job
select * from emp where MGR is null;
select * from emp where nvl(mgr,0)=0;
--8.  查询公司中有奖金的员工姓名,工资和奖金级别
select * from emp where comm is not null;
select * from emp where nvl(comm,0)!=0;
--9.  选择员工姓名的第三个字母是军的员工姓名
select * from emp where ename like '__军%';
--10.(重点) 选择姓名中有字母a和e的员工姓名
select * from emp where ename like '%军%志' or ename like '%志%军%';
select * from emp where ename like '%军%' and ename like '%志%'; 
--11. 显示系统时间
select sysdate from dual;
select to_char(sysdate,'mm-dd-yyyy') from dual;
Select current_timestamp from dual;
--12.查询员工号,姓名,工资,以及工资提高百分之20%后的结果
select  empno,ename,sal 工资,sal*1.2 from emp;
--13.(重点)将员工的姓名按首字母排序,并写出姓名的长度(length)
select ename,length(ename) from emp order by substr(ename,0);
--14. 查询各员工的姓名,并显示出各员工在公司工作的月份数
select ename as 姓名,floor(((sysdate-hiredate)/30)) as 月份数 from EMP;
--15. 查询员工的姓名,以及在公司工作的月份数(worked_month),并按月份数降序排列
select ename as 姓名,floor(((sysdate-hiredate)/30)) as 月份数 from EMP order by 月份数 desc;
--(重点)16.decode函数(decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值))
--查询部门人数
select sum(decode(deptno,1,1,0)) 部门1,sum(decode(deptno,2,1,0)) 部门2 from emp;
select deptno,count(*) from emp group by deptno;
--18.查询公司员工工资的最大值,最小值,平均值,总和
select max(sal),min(sal),avg(sal),sum(sal) from emp;
--19.查询各job_id的员工工资的最大值,最小值,平均值,总和
select max(sal),min(sal),round(avg(sal)),sum(sal) from emp group by job;
--20.查询各个job的员工人数
select job,count(*) from emp group by job; 
--21.查询员工最高工资和最低工资的差距(DIFFERENCE)
select max(sal)-min(sal) as 差距 from emp;
--(重点)22.查询各个管理者手下员工的最低工资,其中最低工资不能低于6000,没有管理者的员工不计算在内
--先筛选再分组(筛选字段必须在查询字段中)
select mgr,min(sal) from emp where sal>6000 group by mgr having mgr is not null;
select mgr,min(sal) from emp where sal>6000 and mgr is not null group by mgr;
--先分组再筛选
select mgr,min(sal) from emp group by mgr having min(sal)>6000 and mgr is not null;
--(重点)23.查询所有部门名字中所有位置location的员工数量和工资平均值(双表查询)
select dname,job,count(*),round(avg(sal)) r from dept,emp group by dname,job order by r desc;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值