常用SQl 查詢語句

 常用SQl 查詢語句收藏

<script></script>  
  1. 1 找出佣金高於薪金60%的僱員。   
  2. SELECT * FROM emp WHERE comm>sal*0.6;   
  3.   
  4. 2 找出部門10中所有經理和部門20中所有辦事員的詳細資料。   
  5. SELECT * FROM emp   
  6. WHERE deptno=10 AND JOB='MANAGER' OR deptno=20 AND job='CLERK';   
  7.   
  8. 3 找出部門10中所有經理,部門20中所有辦事員以及既不是經理又不是辦事員但其薪金大於或等2000的所有僱員的詳細資料。   
  9. SELECT * FROM emp   
  10. WHERE deptno=10 AND JOB='MANAGER' OR deptno=20 AND job='CLERK' OR JOB NOT IN('MANAGER','CLERK') AND SAL>=2000;    
  11. SELECT * FROM emp   
  12. WHERE deptno=10 AND JOB='MANAGER' OR deptno=20 AND job='CLERK' OR (JOB<>'MANAGER' AND JOB<>'MANAGER' AND SAL>=2000);    
  13.   
  14. 4 找出收取佣金的僱員的不同工作。   
  15. SELECT DISTINCT JOB FROM EMP WHERE COMM IS NOT NULL;   
  16.   
  17. 5 找出不收取佣金或收取的佣金低於300的僱員。   
  18. SELECT * FROM EMP WHERE COMM IS NULL OR COMM<300;   
  19.   
  20. 6 找出各月最後一天受僱的所有僱員。   
  21. SELECT * FROM EMP WHERE HIREDATE=LAST_DAY(HIREDATE);   
  22. --找出各月最後受僱的所有僱員   
  23. SELECT * FROM emp WHERE hiredate IN   
  24. (SELECT maxh FROM   
  25. (SELECT MAX(HIREDATE) AS maxh,EXTRACT(MONTH FROM hiredate)   
  26. FROM EMP   
  27. GROUP BY EXTRACT(MONTH FROM hiredate)));   
  28.   
  29. 7 找出晚於26年之前受僱的僱員。   
  30. SELECT * FROM emp WHERE months_between(SYSDATE,hiredate)<=26*12;   
  31.   
  32. 8 顯示只有首字母大寫的的所有僱員的姓名。   
  33. SELECT * FROM emp WHERE ename=initcap(ename);   
  34.   
  35. 9 顯示正好爲5個字符的僱員的姓名。   
  36. SELECT * FROM emp WHERE length(ename)=5;   
  37.   
  38. 10顯示不帶有“R”的僱員姓名。   
  39. SELECT * FROM emp WHERE instr(ename,'R')=0;   
  40. SELECT * FROM emp WHERE ename NOT LIKE '%R%';   
  41.   
  42. 11顯示所有僱員的姓名的前三個字符。   
  43. SELECT substr(ename,1,3) AS en3 FROM emp;   
  44.   
  45. 12顯所有僱員的姓名,用a替換所有“A”。   
  46. SELECT REPLACE(ename,'A','a') FROM emp;   
  47.   
  48. 13顯示所有僱員的姓名以及滿10年服務年限的日期。   
  49. SELECT ENAME,HIREDATE,ADD_MONTHS(HIREDATE,120) AS H_10Y FROM EMP;   
  50.   
  51. 14顯示僱員的詳細資料,按姓名排序。   
  52. SELECT * FROM EMP ORDER BY ENAME;   
  53.   
  54. 15顯示僱員姓名,根據其服務年限,將最老的僱員排在最前面。   
  55. SELECT ENAME,HIREDATE FROM EMP ORDER BY HIREDATE;   
  56.   
  57. 16顯示所有僱員的姓名、工作和薪金,按工作內的工作的降序順序順序排序,而工作按薪金排序。   
  58. SELECT ENAME,JOB,SAL   
  59. FROM EMP   
  60. ORDER BY JOB DESC,SAL;   
  61.   
  62. 17顯示所有僱員的姓名和加入公司的年份和月份,按僱員受僱日所在月排序,並將最早年份的項目排在最前面。   
  63. SELECT ENAME,TO_CHAR(HIREDATE,'YYYY-MM') AS Y_M   
  64. FROM EMP   
  65. ORDER BY TO_CHAR(HIREDATE,'MM'),TO_CHAR(HIREDATE,'YYYY');   
  66.   
  67. 18顯示在一個月爲30天的情況下所有僱員的日薪金,取整。   
  68. SELECT ROUND(SAL/30) AS SAL FROM EMP;   
  69.   
  70. 19找出在(任何年份的)2月受聘的所有僱員。   
  71. SELECT * FROM EMP WHERE TO_CHAR(HIREDATE,'MM')='02';   
  72.   
  73. 20對於每個僱員,顯示其加入公司的天數。   
  74. SELECT CEIL(SYSDATE-HIREDATE) AS DY FROM EMP;   
  75.   
  76. 21顯示姓名字段的任何位置,包含“A”的所有僱員的姓名。   
  77. SELECT ENAME FROM EMP WHERE ENAME LIKE '%A%';   
  78. SELECT ENAME FROM EMP WHERE INSTR(ENAME,'A')>0;   
  79.   
  80. 22以年、月和日顯示所有僱員的服務年限。   
  81. SELECT HIREDATE,   
  82.   FLOOR(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12) AS Y,   
  83.   MOD(FLOOR(MONTHS_BETWEEN(SYSDATE,HIREDATE)),12) AS M,   
  84.   MOD(FLOOR(SYSDATE-HIREDATE),30) AS D   
  85. FROM EMP;   
  86.   
  87. 23列出至少有一個僱員的所有部門。   
  88. SELECT * FROM DEPT WHERE DEPTNO IN (SELECT DISTINCT DEPTNO FROM EMP);   
  89.   
  90. 24列出薪金比“SMITH”多的所有僱員。   
  91. SELECT * FROM EMP WHERE SAL>(SELECT SAL FROM EMP WHERE ENAME='SMITH');   
  92.   
  93. 25列出所有僱員的姓名及其上級的姓名。   
  94. SELECT ygb.ename AS empnm,sjb.ename AS mgrnm   
  95. FROM emp ygb,emp sjb   
  96. WHERE ygb.mgr=sjb.empno;   
  97.   
  98. 26列出入職日期早於其直接上級的所有僱員。   
  99. SELECT * FROM emp ygb WHERE hiredate<(SELECT hiredate FROM emp sjb WHERE sjb.empno=ygb.mgr);   
  100.   
  101. 27列出部門和這些部門的僱員,同時列出那些沒有僱員的部門。   
  102. /*  
  103. SELECT * FROM dept WHERE deptno IN (SELECT DISTINCT deptno FROM emp)  
  104. UNION  
  105. SELECT * FROM dept WHERE deptno NOT IN (SELECT DISTINCT deptno FROM emp)  
  106. */  
  107. SELECT dname,ename   
  108. FROM dept a LEFT JOIN emp b   
  109. ON a.deptno=b.deptno;   
  110.   
  111. 28列出所有“CLERK”(辦事員)的姓名及其部門名稱。   
  112. SELECT ename,dname   
  113. FROM dept a,emp b   
  114. WHERE a.deptno=b.deptno AND job='CLERK';   
  115.   
  116. 29列出各種類型的最低薪金,並使最低薪金大於1500。   
  117. SELECT job,MIN(sal)   
  118. FROM emp   
  119. GROUP BY job   
  120. HAVING MIN(sal)>1500;   
  121.   
  122. 30列出從事“SALES”(銷售)工作的僱員的姓名,假定不知道銷售部的部門編號。   
  123. SELECT ename FROM emp WHERE deptno=(SELECT deptno FROM dept WHERE dname='SALES');   
  124.   
  125. 31列出薪金高於公司平均水平的所有僱員。   
  126. SELECT * FROM EMP WHERE SAL>(SELECT AVG(SAL) FROM EMP);   
  127.   
  128. 32列出與“SCOTT”從事相同工作的所有僱員。   
  129. SELECT * FROM EMP WHERE JOB=(SELECT JOB FROM EMP WHERE ENAME='SCOTT') AND ENAME<>'SCOTT';   
  130.   
  131. 33列出薪金等於在部門30工作的所有僱員的姓名和薪金。   
  132. SELECT * FROM EMP WHERE SAL IN(SELECT SAL FROM EMP WHERE DEPTNO=30);   
  133.   
  134. 34列出薪金高於在部門30工作的所有僱員的姓名和薪金。   
  135. SELECT * FROM EMP WHERE SAL >ALL(SELECT SAL FROM EMP WHERE DEPTNO=30);   
  136.   
  137. 35列出在每個部門工作的僱員的經理以及其他信息。   
  138. SELECT A.*,B.*   
  139. FROM DEPT A,EMP B   
  140. WHERE A.DEPTNO=B.DEPTNO AND JOB='MANAGER';   
  141. /*  
  142. SELECT A.*,B.*  
  143. FROM (SELECT * FROM EMP WHERE JOB<>'MANAGER') A,(SELECT * FROM EMP WHERE JOB='MANAGER') B  
  144. WHERE A.DEPTNO=B.DEPTNO AND B.JOB='MANAGER'  
  145. ORDER BY A.DEPTNO;  
  146. */  
  147.   
  148. 36列出所有僱員的僱員名稱、部門名稱和薪金。   
  149. SELECT ENAME,DNAME,SAL   
  150. FROM DEPT A,EMP B   
  151. WHERE A.DEPTNO=B.DEPTNO;   
  152.   
  153. 37列出從事同一種工作但屬於不同部門的僱員的不同組合。   
  154. SELECT * FROM emp ORDER BY job,deptno;   
  155.   
  156. 38列出分配有僱員數量的所有部門的詳細信息,即使是分配有0個僱員。   
  157. SELECT * FROM dept WHERE deptno IN (SELECT DISTINCT deptno FROM emp)   
  158. UNION   
  159. SELECT * FROM dept WHERE deptno NOT IN (SELECT DISTINCT deptno FROM emp)   
  160.   
  161. 39列出各種類型工作的最低工資。   
  162. SELECT job,MIN(sal)   
  163. FROM emp   
  164. GROUP BY job;   
  165.   
  166. 40列出各個部門的MANAGER(經理)的最低薪金。   
  167. SELECT MIN(sal) FROM emp WHERE job='MANAGER';   
  168.   
  169. 41列出按年薪排序的所有僱員的年薪。   
  170. SELECT sal*12 AS y_sal FROM emp ORDER BY sal*12;   
  171.   
  172. 42列出薪金水平處於第四位的僱員。   
  173. SELECT * FROM   
  174.   (SELECT a.*,row_number() over(ORDER BY sal DESC) AS rn FROM emp a)   
  175. WHERE rn=4;   
  176.   
  177. 43查找EMP表中前5條記錄   
  178. SELECT * FROM emp WHERE ROWNUM<=5;   
  179.   
  180. 44查找EMP表中10條以後的記錄   
  181. SELECT * FROM (SELECT a.*,ROWNUM AS rn FROM emp a) WHERE rn>10;   
  182.   
  183. 45查找EMP表中薪水第5高的員工   
  184. SELECT * FROM   
  185.   (SELECT a.*,row_number() over(ORDER BY sal DESC) AS rn FROM emp a)   
  186. WHERE rn=5;   
  187.   
  188. 46查找EMP表部門30中薪水第3的員工   
  189. SELECT * FROM   
  190.   (SELECT a.*,row_number() over(PARTITION BY deptno ORDER BY sal DESC) AS rn FROM emp a)   
  191. WHERE rn=5 AND deptno=30;   
  192.   
  193. 47查找EMP表中每部門薪水第3的員工   
  194. SELECT * FROM   
  195.   (SELECT a.*,row_number() over(PARTITION BY deptno ORDER BY sal DESC) AS rn FROM emp a)   
  196. WHERE rn=3;   
  197.   
  198. 48統計各部門的薪水總和.   
  199. SELECT deptno,SUM(sal) AS sumsal   
  200. FROM emp   
  201. GROUP BY deptno;   
  202.   
  203. --每個部門員工和經理的詳細信息:編號,姓名,薪水,入職日期,部門編號   
  204. SELECT a.empno AS eno,a.ename AS enm,a.job AS ejob,a.sal AS esal,a.hiredate AS edate,a.deptno AS edept,   
  205.        b.empno AS mno,b.ename AS mnm,b.job AS mjob,b.sal AS msal,b.hiredate AS mdate,b.deptno AS mdept   
  206. FROM (SELECT * FROM emp WHERE job<>'MANAGER' AND job<>'PRESIDENT') a,(SELECT * FROM emp WHERE job='MANAGER') b   
  207. WHERE a.deptno=b.deptno;  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章