– 操作题目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,-1212);
–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’);