oracle练习题

– 操作题目A:参考scott账户下面的emp表和dept表
–1 找出佣金高于薪金60%的雇员。
SELECT * FROM emp;SELECT * FROM dept;
SELECT * FROM emp WHERE comm>sal*0.6;

–2 找出部门10中所有经理和部门20中所有办事员的详细资料
SELECT * FROM emp WHERE deptno=10 AND job='MANAGER’OR deptno=20 AND job=‘CLERK’;

–3 找出部门10中所有经理,部门20中所有办事员–以及既不是经理又不是办事员但其薪金大于或等2000的所有雇员的详细资料
SELECT * FROM emp WHERE (deptno=10 AND job=‘MANAGER’) OR (deptno=20 AND job=‘CLERK’)OR (job NOT IN(‘MANAGER’,‘CLERK’) and sal>=2000);

–4 找出收取佣金的雇员的不同工作。
SELECT DISTINCT job FROM emp WHERE nvl(comm,0)>0 ;

–5 找出不收取佣金或收取的佣金低于300的雇员。
SELECT * FROM emp WHERE nvl(comm,0)<=0 OR NVL(comm,0)<300;

–6 找出各月最后一天受雇的所有雇员。
SELECT * FROM emp WHERE hiredate=last_day(hiredate);

–7 找出晚于26年之前受雇的雇员。
SELECT * FROM emp WHERE months_between(SYSDATE,hiredate)<=2612;
—找出早于12年前受雇的员工.
select * from emp where hiredate < add_months(sysdate,-12
12);

–8 显示只有首字母大写的的所有雇员的姓名。
SELECT ename FROM emp WHERE ename=INITCAP(ename);
SELECT *FROM uu;SELECT INITCAP(uname) FROM uu;

–9 显示正好为5个字符的雇员的姓名。
SELECT ename FROM emp WHERE LENGTH(ename)=5;

–10显示不带有“R”的雇员姓名。
SELECT ename FROM emp WHERE ename NOT LIKE ‘%R%’;

–11显示雇员的详细资料,按姓名排序。
SELECT * FROM emp ORDER BY ename ASC;

–12显示雇员姓名,根据其服务年限,将最老的雇员排在最前面。
SELECT ename FROM emp ORDER BY hiredate ASC;

–13显示所有雇员的姓名、工作和薪金,按工作的降序排序,而工作按薪金排序。 SELECT ename,job,sal FROM emp ORDER BY job DESC,sal;

–14.找出所有的普通员工:
SELECT * FROM emp WHERE job='SALESMAN’OR job=‘CLERK’;

–1显示所有雇员的姓名的前三个字符。
SELECT SUBSTR(ename,1,3) FROM emp;

–2显所有雇员的姓名,用a替换所有“A”。
SELECT REPLACE(ename,‘a’,‘A’) FROM emp;

–3显示所有雇员的姓名以及满10年服务年限的日期。
SELECT ename,add_months(hiredate,12*10 ) FROM emp;

–4显示所有雇员的姓名和加入公司的年份和月份,–按雇员受雇日所在月排序,并将最早年份的项目排在最前面。
SELECT ename,to_char(hiredate,‘yyyy"年"mm"月"’) AS 年月,hiredate FROM empORDER BY to_char(hiredate,‘mm’),to_char(hiredate,‘yyyy’);

–5显示在一个月为30天的情况下所有雇员的日薪金,取整。
SELECT ename,TRUNC(sal/30) daysal FROM emp;

–6找出在(任何年份的)2月受聘的所有雇员。
SELECT *FROM emp WHERE to_char(hiredate,‘mm’)=‘02’;

–7对于每个雇员,显示其加入公司的天数。
SELECT ename,FLOOR(SYSDATE-hiredate) todays FROM emp;

–8.求部门中哪些人的薪水最高:
SELECT ename,deptno,sal FROM emp WHERE sal IN(SELECT DISTINCT MAX(sal) FROM emp GROUP BY deptno);

–9.求部门平均薪水的等级:
SELECT *FROM salgrade;
SELECT deptno,grade avg_sal FROM(SELECT deptno,AVG(sal) avg_sal FROM emp GROUP BY deptno) t JOIN salgrade s ON(t.avg_sal BETWEEN s.losal AND s.hisal);

–10.求部门平均的薪水等级
SELECT deptno,grade avg_sal FROM(SELECT deptno,AVG(sal) avg_sal FROM emp GROUP BY deptno) t JOIN salgrade s ON(t.avg_sal BETWEEN s.losal AND s.hisal);

–11.雇员中哪些人是经理人:
SELECT * FROM emp WHERE job=‘MANAGER’;
–12.不准用组函数,求薪水的最高值
SELECT sal FROM emp ORDER BY sal DESC;SELECT * FROM salgrade;

–13.求平均薪水最高的部门的部门编号
SELECT * FROM dept WHERE deptno in (SELECT deptno FROM( SELECT deptno FROM (SELECT deptno,avg(sal) s FROM emp GROUP BY deptno),salgradeWHERE s BETWEEN losal AND hisal ORDER BY grade DESC)WHERE ROWNUM=1);

–14.求平均薪水最高的部门的部门名字
SELECT * FROM dept;SELECT * FROM emp;SELECT dname,AVG(sal)FROM emp e,dept dWHERE e.deptno=d.deptnoGROUP BY dnameORDER BY AVG(sal) DESC;

–15.求比普通员工的最高薪水还要高的经理人名称
SELECT * FROM emp WHERE job=‘MANAGER’;SELECT ename,sal FROM emp WHERE sal>(SELECT MAX(sal) FROM emp WHERE job NOT IN(‘MANAGER’,‘PRESIDENT’,‘ANALYST’))AND job in (‘MANAGER’,‘PRESIDENT’,‘ANALYST’);

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值