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中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料
    Select * from emp where(job=’MANAGER’and deptno=10) or (job=’CLERK’ and deptno=20);
  6. 找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK),既不是经理又不是办事员但薪金大于或等于2000的所有员工的详细资料
    Select * from emp where (job=’MANAGER’and deptno=10) or (job=’CLERK’and deptno=20) or (job<>’MANAGER’and job<>’CLERK’) and sal>=2000);
  7. 找出收取佣金的员工的不同工作。
    Select distinct ename,job,comm from emp where nvl(comm,0)>0;// nvl(comm,0) 只当comm为空时就变为0

Select distinct job from emp where nvl(comm,o)>0;
8. 找出不收取佣金或收取的佣金低于100的员工。
Select ename,comm,from emp where nvl(comm,0)=0 or nvl(comm,0)<100;
9. 找出各月倒数第3天受雇的所有员工
Select ename,hiredate from emp where hiredate =last_day(hiredate)-2;

  1. 找出早于12年前受雇的员工
    Select ename,job from emp where months_between(sysdate,hiredate)/12>12;
  2. 以首字母大写的方式显示所有员工的姓名。
    Select initcap(ename) from emp;
  3. 显示正号为5个字符的员工的姓名
    Select ename from emp where length(ename)=5;
    Select ename from emp where ename like ’_____’;
  4. 显示不带有‘R’的员工的姓名。
    Select ename from emp where ename not like ‘%R%’;
  5. 显示所有员工姓名的前三个字符
    Select substr(ename,1,3) name from emp;
  6. 显示所有员工的姓名,用a替换所有‘A’
    Select replace(ename,’A’,’a’) from emp;
  7. 显示满10年服务年限的员工的姓名和受雇日期
    Select ename,hiredate from emp where months_between(sysdate,hiredate)/12>=10;
  8. 显示员工的详细资料,按姓名排序
    Select * from emp order bu ename;
  9. 显示员工的姓名和受雇日期,根据其服务年限,将最老的员工在最前面
    Select ename,diredate from emp order by hiredate desc;
  10. 显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序
    Select ename,job,sal from emp order by job desc,salasc;
  11. 显示所有员工的姓名,加入公司的年份和月份,按受雇日期所在月排序,如月份相同则将最早年份的员工排在最前面。
    Select ename,to_char(hiredate,’yyyy’) year,to_char(hiredate,’mm’) months from emp order by months , year asc;
  12. 显示在一个月为30天的情况所有员工的日薪金,忽略余数。
    Select ename,trunc(sal/30) dailysal from emp;
  13. 找出在(任何年份的)2月受聘的所有员工
    Select ename,hiredate from emp where to_char(hiredate,’mm’)=’02’;
  14. 对于每个员工,显示其加入公司的天数
    Select ename,trunc(sysdate-hiredate) from emp;
  15. 显示姓名字段的任何位置包含‘A’的所有员工的姓名。
    Select ename from emp where instr(ename,’A’,1)>0;
  16. 以年月日的方式显示所有员工的服务年限
    1.Select ename,to_char(hiredate,’yyyy-mm-dd’) from emp;
    2.select empno,ename,(‘在职’|| trunc((months_between(sysdate,hiredate))/12)||‘年’||trunc(mod((months_between(sysdate,hiredate)),12))||‘个月’||round(sysdate-(add_months(hiredate,months_between(sysdate,hiredate))))||‘天’) tot from emp;
  17. select to_char(to_date(‘0001-01-01’,‘yyyy-mm-dd’)+(sysdate-hiredate)-366-31,‘yy-mm-dd’) as tot from emp;
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值