ORCALEではよく使うクエリ文

12698 ワード

1         60%   。
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; 
SELECT * FROM emp
WHERE deptno=10 AND JOB='MANAGER' OR deptno=20 AND job='CLERK' OR (JOB<>'MANAGER' AND JOB<>'MANAGER' AND SAL>=2000); 

4               。
SELECT DISTINCT JOB FROM EMP WHERE COMM IS NOT NULL;

5                300   。
SELECT * FROM EMP WHERE COMM IS NULL OR COMM<300;

6                。
SELECT * FROM EMP WHERE HIREDATE=LAST_DAY(HIREDATE);
--             
SELECT * FROM emp WHERE hiredate IN
(SELECT maxh FROM
(SELECT MAX(HIREDATE) AS maxh,EXTRACT(MONTH FROM hiredate)
FROM EMP
GROUP BY EXTRACT(MONTH FROM hiredate)));

7     26        。
SELECT * FROM emp WHERE months_between(SYSDATE,hiredate)<=26*12;

8                   。
SELECT * FROM emp WHERE ename=initcap(ename);

9      5         。
SELECT * FROM emp WHERE length(ename)=5;

10     “R”     。
SELECT * FROM emp WHERE instr(ename,'R')=0;
SELECT * FROM emp WHERE ename NOT LIKE '%R%';

11               。
SELECT substr(ename,1,3) AS en3 FROM emp;

12        , a    “A”。
SELECT REPLACE(ename,'A','a') FROM emp;

13            10        。
SELECT ENAME,HIREDATE,ADD_MONTHS(HIREDATE,120) AS H_10Y FROM EMP;

14         ,     。
SELECT * FROM EMP ORDER BY ENAME;

15      ,       ,           。
SELECT ENAME,HIREDATE FROM EMP ORDER BY HIREDATE;

16         、     ,                ,        。
SELECT ENAME,JOB,SAL
FROM EMP
ORDER BY JOB DESC,SAL;

17                    ,           ,              。
SELECT ENAME,TO_CHAR(HIREDATE,'YYYY-MM') AS Y_M
FROM EMP
ORDER BY TO_CHAR(HIREDATE,'MM'),TO_CHAR(HIREDATE,'YYYY');

18       30             ,  。
SELECT ROUND(SAL/30) AS SAL FROM EMP;

19   (     )2        。
SELECT * FROM EMP WHERE TO_CHAR(HIREDATE,'MM')='02';

20      ,          。
SELECT CEIL(SYSDATE-HIREDATE) AS DY FROM EMP;

21           ,  “A”        。
SELECT ENAME FROM EMP WHERE ENAME LIKE '%A%';
SELECT ENAME FROM EMP WHERE INSTR(ENAME,'A')>0;

22  、              。
SELECT HIREDATE,
  FLOOR(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12) AS Y,
  MOD(FLOOR(MONTHS_BETWEEN(SYSDATE,HIREDATE)),12) AS M,
  MOD(FLOOR(SYSDATE-HIREDATE),30) AS D
FROM EMP;

23              。
SELECT * FROM DEPT WHERE DEPTNO IN (SELECT DISTINCT DEPTNO FROM EMP);

24     “SMITH”      。
SELECT * FROM EMP WHERE SAL>(SELECT SAL FROM EMP WHERE ENAME='SMITH');

25                。
SELECT ygb.ename AS empnm,sjb.ename AS mgrnm
FROM emp ygb,emp sjb
WHERE ygb.mgr=sjb.empno;

26                  。
SELECT * FROM emp ygb WHERE hiredate<(SELECT hiredate FROM emp sjb WHERE sjb.empno=ygb.mgr);

27            ,             。
/*
SELECT * FROM dept WHERE deptno IN (SELECT DISTINCT deptno FROM emp)
UNION
SELECT * FROM dept WHERE deptno NOT IN (SELECT DISTINCT deptno FROM emp)
*/
SELECT dname,ename
FROM dept a LEFT JOIN emp b
ON a.deptno=b.deptno;

28    “CLERK”(   )         。
SELECT ename,dname
FROM dept a,emp b
WHERE a.deptno=b.deptno AND job='CLERK';

29           ,        1500。
SELECT job,MIN(sal)
FROM emp
GROUP BY job
HAVING MIN(sal)>1500;

30    “SALES”(  )        ,             。
SELECT ename FROM emp WHERE deptno=(SELECT deptno FROM dept WHERE dname='SALES');

31                 。
SELECT * FROM EMP WHERE SAL>(SELECT AVG(SAL) FROM EMP);

32   “SCOTT”           。
SELECT * FROM EMP WHERE JOB=(SELECT JOB FROM EMP WHERE ENAME='SCOTT') AND ENAME<>'SCOTT';

33         30             。
SELECT * FROM EMP WHERE SAL IN(SELECT SAL FROM EMP WHERE DEPTNO=30);

34         30             。
SELECT * FROM EMP WHERE SAL >ALL(SELECT SAL FROM EMP WHERE DEPTNO=30);

35                     。
SELECT A.*,B.*
FROM DEPT A,EMP B
WHERE A.DEPTNO=B.DEPTNO AND JOB='MANAGER';
/*
SELECT A.*,B.*
FROM (SELECT * FROM EMP WHERE JOB<>'MANAGER') A,(SELECT * FROM EMP WHERE JOB='MANAGER') B
WHERE A.DEPTNO=B.DEPTNO AND B.JOB='MANAGER'
ORDER BY A.DEPTNO;
*/

36           、       。
SELECT ENAME,DNAME,SAL
FROM DEPT A,EMP B
WHERE A.DEPTNO=B.DEPTNO;

37                        。
SELECT * FROM emp ORDER BY job,deptno;

38                   ,      0   。
SELECT * FROM dept WHERE deptno IN (SELECT DISTINCT deptno FROM emp)
UNION
SELECT * FROM dept WHERE deptno NOT IN (SELECT DISTINCT deptno FROM emp)

39             。
SELECT job,MIN(sal)
FROM emp
GROUP BY job;

40       MANAGER(  )     。
SELECT MIN(sal) FROM emp WHERE job='MANAGER';

41               。
SELECT sal*12 AS y_sal FROM emp ORDER BY sal*12;

42              。
SELECT * FROM
  (SELECT a.*,row_number() over(ORDER BY sal DESC) AS rn FROM emp a)
WHERE rn=4;

43  EMP   5   
SELECT * FROM emp WHERE ROWNUM<=5;

44  EMP  10      
SELECT * FROM (SELECT a.*,ROWNUM AS rn FROM emp a) WHERE rn>10;

45  EMP     5    
SELECT * FROM
  (SELECT a.*,row_number() over(ORDER BY sal DESC) AS rn FROM emp a)
WHERE rn=5;

46  EMP   30    3   
SELECT * FROM
  (SELECT a.*,row_number() over(PARTITION BY deptno ORDER BY sal DESC) AS rn FROM emp a)
WHERE rn=5 AND deptno=30;

47  EMP        3   
SELECT * FROM
  (SELECT a.*,row_number() over(PARTITION BY deptno ORDER BY sal DESC) AS rn FROM emp a)
WHERE rn=3;

48          .
SELECT deptno,SUM(sal) AS sumsal
FROM emp
GROUP BY deptno;

--              :  ,  ,  ,    ,    
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,
       b.empno AS mno,b.ename AS mnm,b.job AS mjob,b.sal AS msal,b.hiredate AS mdate,b.deptno AS mdept
FROM (SELECT * FROM emp WHERE job<>'MANAGER' AND job<>'PRESIDENT') a,(SELECT * FROM emp WHERE job='MANAGER') b
WHERE a.deptno=b.deptno;
 SQL>select*from emp;EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO----------------------------------------------------------7369 SMITH CLERK 7902 0 0 0 0 0 0 0 0-12 800.00 20 7499 ALLESMAN 7698 1-20 16076.00 30 7500 WARD SALESMAN 7698010 1400.030 7698 BLAKE MANAGER 7839 1-5 2850.00 7782 CLARK MANAGER 7839 1981-6-9 2450.00 10 7788 SCOTT ANALYST 7566-19 30.00 KING PRESIDENT 1981-17 5000.00 TURNESALESMAN 7698-15701981-2-30.00 0 MILLER CLERK 7782-22 1300.00 14ローソンselected SQL>select*from dept。DEPTNO DNAME LOC----------------------10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPEERATIONS BOTON 1は、コミッションが給料の60%以上の従業員を探し出す。SELECT*FROM emp WHERE comp>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;SELECT*FROM emp WHERE deptno=10 AND JOB='MANAGER'OR deptno=20 AND job='CLERK'OR(JOB<>'MANAGER'AND JOB<>'MANAGER'AND SAL==2000);4手数料を受け取る従業員の異なる仕事を探し出す。SELECT DISTINCT JOB FROM EMP WHERE COMM IS NOT NULL;5手数料を取らない、または受け取った口銭が300未満の従業員を探し出す。SELECT*FROM EMP WHERE COMM IS NULL OR COMM<300;6月の最後の日に雇われたすべての従業員を探し出す。SELECT*FROM EMP WHERE HIREDATE=LAST_DAY(HIREDATE)各月最後に雇われた全ての従業員SELECT*FROM emp WHERE hiredate IN(SELECT maxh FROM(SELECT MAX(HIREDATE)AS maxh、EXTRACT(MONTH FROM hiredate)を探し出します。7 26年前に雇われた従業員を探し出す。SELECT*FROM emp WHERE moths_between(SYSDATE、hiredate)<=26*12;8頭文字だけを大文字にした従業員の名前を表示します。SELECT*FROM emp WHERE ename=initcap(ename)9はちょうど5文字の従業員の名前を表示します。SELECT*FROM emp WHERE length=5;10は「R」を持たない従業員の名前を表示します。SELECT*FROM emp WHERE instr(ename,'R')=0SELECT*FROM emp WHERE ename NOT LIKE'%R';11従業員の名前の最初の3文字を表示します。SELECT substr(ename,1,3)AS en 3 FROM emp;12はすべての従業員の名前を表示して、aを使ってすべての“A”を交替します。SELECT REPLACE(ename,'A')FROM emp;13すべての従業員の名前と10年間のサービス年限の日付を表示します。SELECT ENAME,HIREDATE,ADD_MONTHS(HIREDATE、120)AS H_10 Y FROM EMP14従業員の詳細を表示し、名前で並べ替えます。SELECT*FROM EMP ORDER BY ENAME;15従業員の名前を表示して、そのサービスの年限によって、最も古い従業員は一番前に並べます。SELECT ENAME,HIREDATE FROM EMP ORDER BY HIREDATE;16すべての従業員の名前、仕事と給料を表示して、仕事内の仕事の降順順順に並べ替えて、仕事は給料によって並べ替えます。SELECT ENAME、JOB、SAL FROM EMP ORDER BY JOB DESC、SAL。17すべての従業員の名前と入社年と月を表示し、従業員の雇われた日の所在月によって並べ替えて、一番早い年度の項目を一番前に並べます。SELECT ENAME,TO_CHAR(HIREDATE、'Y Y Y-M')AS Y_M FROM EMP ORDER BY TO_CHAR(HIREDATE、'MM')、TO_CHAR(HIREDATE、'YYY')18は一ヶ月が30日間の場合、従業員全員の日給を表示し、整理します。SELECT ROUND(SAL/30)AS SAL FROM EMP;19(任意の年)2月に雇用されたすべての従業員を探し出す。SELECT*FROM EMP WHERE TO_CHAR(HIREDATE、'MM')='02'20従業員一人に対して、入社日数を表示します。SELECT CEIL(SYSDATE-HIREDATE)AS DY FROM EMP;21は名前フィールドの任意の位置を表示し、「A」の従業員の名前を含む。SELECT ENAME FROM EMP WHERE ENAME LIKE'%A';SELECT ENAME FROM EMP WHERE INSTR(ENAME、'A')>022年と月と日で従業員の勤務年数を表示します。SELECT HIREDATE,FLOOR(MONTHS__BETWEEN(SYSDATE,HIREDATE)/12)AS Y,MOD(FLOOR(MONTHS_HuBETWEEN(SYSDATE,HIREDATE)),12)AS M,MOD(FLOOR(SYATE−HIREDATE),30)AS D EMP;23は少なくとも従業員がいるすべての部門をリストしています。SELECT*FROM DEPT WHERE DEPTNO IN(SELECT DISTINCT DEPTNO FROM EMP);24は給料が「SMITH」より多い従業員を並べています。SELECT*FROM EMP WHERE SAL>(SELECT SAL FROM EMP WHERE ENAME='SMITH')25は従業員全員の名前と上司の名前を書きます。SELECT ygb.ename AS empnm、sjb.ename AS mgrnm FROM empygb、empsjb WHERE ygb.mgr=sjb.empno;26入社日が前任者より上位のすべての従業員を一覧表示します。SELECT*FROM emp ygb WHERE hiredate<(SELECT hiredate FRemp sjb WHERE sjb.empno=ygb.mgr);27は部門とこれらの部門の従業員を並べて、同時に従業員がいない部門を並べます。SELECT*FROM dept WHERE deptno IN(SELECT DISTINCT deptのFROM emp)UNION SELECT*FROM deptのWHERE deptのNOT IN(SELECT DISTINCT deptのFROM emp)*/SELECT dname,ename FROM dept a LEFT JOIN emp.ON.deptno=28は、すべての「CLERK」(事務員)の名前と部門名を列記する。SELECT ename、dname FROM dept a、emp b WHERE a.deptno=b.deptno AND job='CLERK'29は各種類の最低賃金を並べ、最低賃金を1500より大きくする。SELECT job、MIN(sal)FROM emp GROUT BY job HAVING MIN(sal)>1500;30は「SALES」(販売)の仕事をしている従業員の名前を列記し、販売部の部門番号が分からないと仮定する。SELECT ename FROM emp WHERE deptno=(SELECT deptのFROM dept WHERE dname='SALES')31給与は会社の平均より高いすべての従業員をリストアップする。SELECT*FROM EMP WHERE SAL>(SELECT AVG(SAL)FROM EMP)32は、「SCOTT」と同じ仕事をする全ての従業員をリストしている。SELECT*FROM EMP WHERE JOB=(SELECT JOB FROM EMP WHERE ENAME='SCOTT')AND ENAME<>'SCOTT';33給料は部門30で働くすべての従業員の名前と給料を列記します。SELECT*FROM EMP WHERE SAL IN(SELECT SAL FROM EMP WHERE DEPTNO=30)34給与は部門30で働いている従業員の名前と給料より高いです。SELECT*FROM EMP WHERE SAL>ALL(SELECT SAL FROM EMP WHERE DEPTNO=30);35各部門で働く従業員のマネージャー及びその他の情報を一覧表示します。SELECT A.*,B.*FROM DEPT A,EMP B WHERE A.DEPTNO=B.DEPTNO AND JOB='MANAGER'/*SELECT A.*,B.*FROM(SELECT*FROM EMP WHERE JOB<>'MANAGER')A,(SELECT*FROM EMP WHERE JOB='MANAGER')B WHERE A.DEPTNO=B.DEPTNO=B.DEPTNO='MANAGER ORDEBY.ADEPTNO.*36従業員全員の従業員名称、部門名及び給与を一覧表示する。SELECT ENAME、DNAME、SAL FROM DEPT A、EMP B WHERE A.DEPTNO=B.DEPTNO;37は同じ仕事をしていますが、異なる部門に属する従業員の異なる組み合わせを示しています。SELECT*FROM emp ORDER BY job、deptno。38従業員の数が割り当てられているすべての部門の詳細情報を一覧表示します。たとえ0人の従業員が割り当てられていても。SELECT*FROM dept WHERE deptno IN(SELECT DISTINCT deptのFROM emp)UNION SELECT*FROM deptのWHERE deptのNOT IN(SELECT DISTINCT deptのFROM emp)39は、様々なタイプの仕事の最低賃金を列記しています。SELECT job、MIN(sal)FROM emp GROUT BY job;40は各部門のMANAGER(経理)の最低賃金をリストしています。SELECT MIN(sal)FROM emp WHERE job='MANAGER'41年間の年俸で並べられた従業員全員の年俸を一覧表示します。SELECT sal*12 AS y_sal FROM emp ORDER BY sal*12;42給与水準は第四位の従業員を並べます。SELECT*FROM(SELECT a.*,rowmber()over(ORDER BY sal DESC)AS rn FROM emp a)WHERE rn=4;43 EMP表のトップ5を検索してSELECT*FROM emp WHERE ROWNUM<=5;44 EMP表の10条以降の記録SELECT*FROM(SELECT a.*,ROWNUM AS rn FROM emp a)WHERE rn>10を検索します。45 EMP表の中で給料が5番目に高い従業員SELECT*FROM(SELECT a.*,rowmumber()over(ORDER BY sal DESC)を検索します。AS rn FROM empa)WHERE rn=5;46 EMPテーブル部門30における給料第3の従業員SELECT*FROM(SELECT a.*,row number()over(PARTTION BY deptno ORDER BY sal DESC)を検索します。AS rn FROM emp a)WHERE rn=5 AND deptno=30;47 EMP表の部門別賃金第3位の従業員SELECT*FROM(SELECT a.*,row number()over(PARTTION BY deptno ORDER BY sal DESC)を検索します。AS rn FROM emp a)WHERE rn=3;48各部門の給与総額を統計します。SELECT deptno、SUM(sal)AS sumsal FROM emp GROUT BY deptno;各部門の従業員と経理の詳細情報:番号、名前、給料、入社日、部門番号はSELECT a.empno AS eno、a.ename AS enm、a.job AS ejob、a.sal AS esal、a.hiredate AS edate、a.deptno ASedptt、b.emmmmmdano、b.aajemmmmmdano、aajem、aaajem、ASdedemmmmmmmmmmmmmmmmmdadano、aaaaaaaajem、ASededededededededemmmmmmmmmmmmmmmmmmmmmmmmmmmmOM(SELECT*FROM emp WHERE job''MANAGER'AND job''PRESIDENT')a,(SELECT*FROM emp WHERE job='MANAGER')b WHERE a.deptno=b.deptno;