2020-10-22

             *oracle入门可以挑战的sql*

–1、列出至少有一个雇员的所有部门信息select * from dept where deptnoin(select deptno from emp group by deptno having count(deptno)>1);
2、列出薪金(工资)比’SMITH’多的所有雇员信息select * from emp where sal>(select sal from emp where ename=‘SMITH’)
3、列出所有雇员的姓名及其上级的姓名select ename,(select ename from emp where empno=d.mgr) from emp d
4、列出入职日期(雇佣日期)早于其直接上级的所有雇员select * from emp d where hiredate>(select hiredate from emp where empno=d.mgr)-
-5、列出部门名称和这些部门的雇员,同时列出那些没有雇员的部门select dname,ename from emp,dept where emp.deptno=dept.deptnoselect dname from dept where deptno not in (select emp.deptno from emp)
–6、列出所有’CLERK’(办事员)的姓名及其部门名称select ename,dname from emp,dept where emp.deptno=dept.deptno and emp.job=‘CLERK’–
7、列出各种类别的最低薪金,并使最低薪金大于1500select min(sal) from emp where sal>1500 group by deptno-
-8、列出从事sales(销售)工作的雇员的姓名,假定不知道销售部的部门编号select ename from emp,dept where dept.dname=‘SALES’ and emp.deptno=dept.deptno-
-9、列出薪金高于公司平均水平的所有雇员信息select * from emp where sal>(select avg(sal) from emp)-
-10、列出与"SCOTT"从事相同工作的所有雇员select * from emp where job=(select job from emp where ename=‘SCOTT’)-
-11、列出薪金等于在部门30工作的雇员的所有姓名和薪金select ename,sal from emp where sal in (select sal from emp where deptno=30)-
-12、列出薪金高于在部门30工作的所有雇员的姓名和薪金select ename,sal from emp where sal>(select max(sal) from emp where deptno=30)-
-13、列出在每个部门工作的雇员的数量以及其他信息select dname,count() from emp,dept where emp.deptno=dept.deptno group by dname-
-14、列出所有雇员的姓名、部门名称和薪金select ename,dname,sal from emp,dept where emp.deptno=dept.deptno-
-15、列出从事同一种工作但属于不同的部门的雇员的不同组合select s.
from emp s,emp d where s.deptno<>d.deptno and s.job=d.job–16、列出分配有雇员数量的所有部门的详细信息,即使分配有零个雇员select * from dept where deptno in (select deptno from emp)–17、列出各种类别工作的最低工资select min(sal) from emp group by deptno-
-18、列出各个部门的MANAGER(经理)的最低薪金select min(sal) from emp where job=‘MANAGER’-
-19、列出按计算字段的排序的所有雇员的年薪(计算字段指的是年薪)select ename,(sal+decode(comm,null,0,comm))12 as 年薪 from emp
–20、列出薪金水平处于第四位的雇员信息select * from (select rownum as f,emp.
from emp where rownum<=4 order by sal desc) e where f>3
–21、显示所有雇员的姓名和加入公司的年份和月份,按雇员受雇日所在月排序,并将最前年份的排在最前面select ename,extract(year from hiredate) as years,extract(month from hiredate) as monthss from emp order by years asc,monthss
–22、显示在一个月为30天的情况下所有雇员的日薪金,忽略余数select round(sal/30) from emp
–23、找出在(任何年份的)2月受聘的所有雇员select * from emp where to_char(hiredate,‘mm’)=2;-
-24、对于每个雇员,显示其加入公司的天数select ename,FLOOR(sysdate-hiredate) from emp;-
-25、显示姓名字段的任何位置包含"A"的所有雇员的姓名select ename from emp where ename like ‘%A%’;-
-26、以年、月和日显示所有雇员的服务年限select ename,trunc(months_between(sysdate,hiredate)/12)年,trunc(mod((months_between(sysdate,hiredate)),12))月,trunc(sysdate-add_months(hiredate,months_between(sysdate,hiredate)))日from emp;

用的表和数据是oracle自带的数据

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值