Oracle 经典语法(三)

作者:%e6%9e%97+%e7%92%90 和oracle相关  

1. 让SELECT TO_CHAR(sal,'L99,999.99') FROM emp WHERE  ROWNUM < 5 输出结果的货币单位是¥和$。
SELECT TO_CHAR(sal,'L99,999.99') FROM emp WHERE  ROWNUM < 5
SELECT TO_CHAR(sal,'$99,999.99') FROM emp WHERE  ROWNUM < 5

/*--说明:对于'$99,999.99'格式符:
L:表示强制显示当地货币符号
$: 表示显示美元符号
9: 表示一个数字
0: 表示强制0显示
.: 表示一个小数点
,: 表示一个千位分隔符
--------------*/

2. 列出前五位每个员工的名字,工资、涨薪后的的工资(涨幅为8%),以“元”为单位进行四舍五入。
SELECT ename,sal,ROUND(sal * 1.08) FROM emp  WHERE ROWNUM <=5;


3. 找出谁是最高领导,将名字按大写形式显示。
SELECT UPPER(ename) AS NAME   FROM  emp  WHERE  mgr =0;


4. 找出SMITH 的直接领导名字。
SELECT UPPER( ename) AS NAME  FROM emp where empno in (select mgr from emp where ename ='SMITH')


6. 哪些员工的工资高于他直接上司的工资,列出员工的名字和工资,上司的名字和工资。
SELECT E.ENAME,E.SAL,M.ENAME,M.SAL  FROM EMP E,EMP M WHERE E.EMPNO = M.EMPNO AND E.SAL > M.SAL;
SELECT E.ENAME,E.SAL FROM EMP E WHERE E.SAL > (SELECT M.SAL FROM EMP M   WHERE E.EMPNO = M.EMPNO);


7. 哪些员工和SMITH同部门。
SELECT ENAME  FROM EMP WHERE DEPTNO IN (SELECT DEPTNO FROM EMP WHERE ENAME='SMITH')

8. 哪些员工跟SMITH做一样职位。

SELECT ENAME  FROM EMP WHERE JOB= (SELECT JOB FROM EMP WHERE ENAME='SMITH')

9. 哪些员工跟SMITH不在同一个部门。
SELECT ENAME  FROM EMP WHERE DEPTNO NOT IN (SELECT DEPTNO FROM EMP WHERE ENAME='SMITH')

10. 哪些员工跟SMITH做不一样的职位。
SELECT ENAME  FROM EMP WHERE JOB != (SELECT JOB FROM EMP WHERE ENAME='SMITH')

11. 显示有提成的员工的信息:名字、提成、所在部门名称、所在地区的名称。
SELECT E.ENAME, E.COMM,D.DNAME,D.LOC FROM EMP E,DEPT D  WHERE E.DEPTNO = D.DEPTNO AND (E.COMM IS NOT NULL AND E.COMM >0) ;

12. 显示 RESEARCH部门有哪些职位。
SELECT DISTINCT E.JOB FROM EMP E,DEPT D  WHERE D.DEPTNO = E.DEPTNO AND D.DNAME = ' RESEARCH';

13. 整个公司中,最高工资和最低工资相差多少。
 SELECT MAX(SAL) - MIN(SAL) FROM EMP

14. 提成大于0 的人数。
 SELECT COUNT(*) AS 提成大于0的人数 FROM emp WHERE comm > 0;


15. 显示整个公司的最高工资、最低工资、工资总和、平均工资保留到整数位。
SELECT MAX(NVL(sal,0)) AS 最高工资, MIN(NVL(sal,0)) AS 最低工资,SUM(NVL(sal,0)) AS 工资总和, ROUND(AVG(NVL(sal,0))) AS 平均工资 FROM emp

16. 整个公司有多少个领导。
SELECT COUNT(DISTINCT(mgr))  FROM emp WHERE mgr IS NOT NULL and mgr!=0;


17. 列出在同一部门入职日期晚但工资高于其他同事的员工:名字、工资、入职日期。
SELECT DISTINCT E1.ename AS 姓名, E1.sal AS 工资,E1.hiredate AS 入职日期 FROM emp E1,emp E2  WHERE e1.empno = E2.empno AND E1.hiredate > E2.hiredate AND E1.sal > E2.sal ORDER BY 工资 DESC;


 

相关资料:

Oracle 经典语法(三)来源网络,如有侵权请告知,即处理!

编程Tags: