您好,登录后才能下订单哦!
SQL> conn scott/tiger@clonepdb_plug
Connected.
SQL> desc emp
Name                                      Null?    Type
EMPNO                                     NOT NULL NUMBER(4)
ENAME                                              VARCHAR2(10)
JOB                                                VARCHAR2(9)
MGR                                                NUMBER(4)
HIREDATE                                           DATE
SAL                                                NUMBER(7,2)
COMM                                               NUMBER(7,2)
DEPTNO                                             NUMBER(2)
SQL> desc dept
Name                                      Null?    Type
DEPTNO                                    NOT NULL NUMBER(2)
DNAME                                              VARCHAR2(14)
LOC                                                VARCHAR2(13) 
提示:工资=SAL+COMM
SQL> set line 100
SQL> select * from emp;
 EMPNO ENAME      JOB              MGR HIREDATE                   SAL       COMM     DEPTNO
  7369 SMITH      CLERK           7902 1980-12-17 00:00:00        800                    20
  7499 ALLEN      SALESMAN        7698 1981-02-20 00:00:00       1600        300         30
  7521 WARD       SALESMAN        7698 1981-02-22 00:00:00       1250        500         30
  7566 JONES      MANAGER         7839 1981-04-02 00:00:00       2975                    20
  7654 MARTIN     SALESMAN        7698 1981-09-28 00:00:00       1250       1400         30
  7698 BLAKE      MANAGER         7839 1981-05-01 00:00:00       2850                    30
  7782 CLARK      MANAGER         7839 1981-06-09 00:00:00       2450                    10
  7839 KING       PRESIDENT            1981-11-17 00:00:00       5000                    10
  7844 TURNER     SALESMAN        7698 1981-09-08 00:00:00       1500          0         30
  7900 JAMES      CLERK           7698 1981-12-03 00:00:00        950                    30
  7902 FORD       ANALYST         7566 1981-12-03 00:00:00       3000                    20
 EMPNO ENAME      JOB              MGR HIREDATE                   SAL       COMM     DEPTNO
  7934 MILLER     CLERK           7782 1982-01-23 00:00:00       1300                    10
12 rows selected.
SQL> select * from dept;
DEPTNO DNAME          LOC
    10 ACCOUNTING     NEW YORK
    20 RESEARCH       DALLAS
    30 SALES          CHICAGO
1.列出至少有一个员工的所有部门。
SQL> select dname from dept where deptno in (select DEPTNO from emp);
ACCOUNTING
RESEARCH
SALES
2.列出薪金比“SMITH”多的所有员工。
SQL> select ENAME from emp where sal>(select sal from emp where ename='SMITH');
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
KING
TURNER
JAMES
FORD
MILLER
11 rows selected.
3.列出所有员工的姓名及其直接上级的姓名。
SQL> select a.ename,(select b.ename from emp b where a.mgr=b.empno) Boss from emp a;
ENAME BOSS
SMITH      FORD
ALLEN      BLAKE
WARD       BLAKE
JONES      KING
MARTIN     BLAKE
BLAKE      KING
CLARK      KING
KING
TURNER     BLAKE
JAMES      BLAKE
FORD       JONES
ENAME BOSS
MILLER CLARK
12 rows selected.
4.列出受雇日期早于其直接上级的所有员工。
SQL> select a.ename from emp a where a.HIREDATE>(select b.HIREDATE from emp b where a.mgr=b.empno);
MARTIN
TURNER
JAMES
FORD
MILLER
5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门
SQL> select a.deptno,a.dname,b.ename,b.empno from dept a,emp b where a.deptno=b.deptno(+);
DEPTNO DNAME          ENAME           EMPNO
    10 ACCOUNTING     KING             7839
    10 ACCOUNTING     CLARK            7782
    10 ACCOUNTING     MILLER           7934
    20 RESEARCH       FORD             7902
    20 RESEARCH       SMITH            7369
    20 RESEARCH       JONES            7566
    30 SALES          JAMES            7900
    30 SALES          TURNER           7844
    30 SALES          MARTIN           7654
    30 SALES          WARD             7521
    30 SALES          ALLEN            7499
DEPTNO DNAME          ENAME           EMPNO
    30 SALES          BLAKE            7698
12 rows selected.
SQL> select a.deptno,a.dname,b.ename,b.empno from dept a left join emp b on a.deptno=b.deptno;
DEPTNO DNAME          ENAME           EMPNO
    10 ACCOUNTING     KING             7839
    10 ACCOUNTING     CLARK            7782
    10 ACCOUNTING     MILLER           7934
    20 RESEARCH       FORD             7902
    20 RESEARCH       SMITH            7369
    20 RESEARCH       JONES            7566
    30 SALES          JAMES            7900
    30 SALES          TURNER           7844
    30 SALES          MARTIN           7654
    30 SALES          WARD             7521
    30 SALES          ALLEN            7499
DEPTNO DNAME          ENAME           EMPNO
    30 SALES          BLAKE            7698
12 rows selected.
Oracle  外连接(OUTER JOIN)包括以下:
左外连接(左边的表不加限制)
右外连接(右边的表不加限制)
全外连接(左右两表都不加限制)
对应SQL:LEFT/RIGHT/FULL OUTER JOIN。 通常省略OUTER关键字, 写成:LEFT/RIGHT/FULL JOIN。
在左连接和右连接时都会以一张A表为基础表,该表的内容会全部显示,然后加上A表和B表匹配的内容。 如果A表的数据在B表中没有记录。 那么在相关联的结果集行中列显示为空值(NULL)。
对于外连接, 也可以使用“(+) ”来表示。 关于使用(+)的一些注意事项:
(+)操作符只能出现在WHERE子句中,并且不能与OUTER JOIN语法同时使用。
当使用(+)操作符执行外连接时,如果在WHERE子句中包含有多个条件,则必须在所有条件中都包含(+)操作符。
(+)操作符只适用于列,而不能用在表达式上。
(+)操作符不能与OR和IN操作符一起使用。
(+)操作符只能用于实现左外连接和右外连接,而不能用于实现完全外连接。
LEFT JOIN是以左表的记录为基础的;用(+)来实现, 这个+号可以这样来理解: + 表示补充,即哪个表有加号,这个表就是匹配表。如果加号写在右表,左表就是全部显示,所以是左连接。
全外连接(FULL OUTER JOIN/FULL JOIN)
左表和右表都不做限制,所有的记录都显示,两表不足的地方均为NULL。 全外连接不支持(+)写法。
6.列出所有“CLERK”(办事员)的姓名及其部门名称。
SQL> select a.ename,b.dname from emp a join  dept b on a.deptno=b.deptno and A.job='CLERK';
ENAME DNAME
MILLER     ACCOUNTING
SMITH      RESEARCH
JAMES      SALES
SQL> select a.ename,b.dname from emp a ,dept b where a.deptno=b.deptno and a.job='CLERK';
ENAME DNAME
SMITH      RESEARCH
JAMES      SALES
MILLER     ACCOUNTING
7.列出最低薪金大于1500的各种工作。
SQL> select distinct Job from emp group by job having min(sal)>1500 ;
PRESIDENT
MANAGER
ANALYST
8.列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。
SQL> select ename from emp where deptno=(select deptno from dept where dname='SALES');
ALLEN
WARD
MARTIN
BLAKE
TURNER
JAMES
6 rows selected.
SQL> select ename from emp a join dept b on a.deptno=b.deptno and b.dname='SALES';
JAMES
TURNER
MARTIN
WARD
ALLEN
BLAKE
6 rows selected.
SQL> select ename from emp a,dept b where a.deptno=b.deptno and b.dname='SALES';
JAMES
TURNER
MARTIN
WARD
ALLEN
BLAKE
6 rows selected.
9.列出薪金高于公司平均薪金的所有员工。
SQL> select * from emp where sal >(select avg(sal) from emp);
 EMPNO ENAME      JOB              MGR HIREDATE                   SAL       COMM     DEPTNO
  7566 JONES      MANAGER         7839 1981-04-02 00:00:00       2975                    20
  7698 BLAKE      MANAGER         7839 1981-05-01 00:00:00       2850                    30
  7782 CLARK      MANAGER         7839 1981-06-09 00:00:00       2450                    10
  7839 KING       PRESIDENT            1981-11-17 00:00:00       5000                    10
  7902 FORD       ANALYST         7566 1981-12-03 00:00:00       3000                    20
10.列出与“SMITH”从事相同工作的所有员工
SQL> select ename from emp where job=(select job from emp where ename='SMITH');
SMITH
JAMES
MILLER
11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。
SQL> select a.ename,a.sal from emp a where a.sal in (select b.sal from emp b where b.deptno=30) and a.deptno<>30;
no rows selected
12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。
SQL> select a.ename,a.sal from emp a where a.sal > (select max(b.sal) from emp b where b.deptno=30) and a.deptno<>30;
ENAME SAL
JONES            2975
KING             5000
FORD             3000
13.列出在每个部门工作的员工数量、平均工资
SQL> select a.dname,(select count(*) from emp b where a.deptno=b.deptno) as DEPTCOUNT,(select avg(sal) from emp b where a.deptno=b.deptno) as deptavgsal from dept a;
DNAME DEPTCOUNT DEPTAVGSAL
ACCOUNTING              3 2916.66667
RESEARCH                3 2258.33333
SALES                   6 1566.66667
SQL> select (select dname from dept b where a.deptno=b.deptno) as dname,count(a.deptno) as deptcount,avg(sal) as deptavgsal from emp a group by deptno
2  ;
DNAME DEPTCOUNT DEPTAVGSAL
SALES                   6 1566.66667
RESEARCH                3 2258.33333
ACCOUNTING              3 2916.66667
14.列出所有员工的姓名、部门名称和工资。
SQL> select a.ename,b.dname,a.sal+NVL(a.comm,0) from emp a join dept b on a.deptno=b.deptno;
ENAME DNAME A.SAL+NVL(A.COMM,0)
KING       ACCOUNTING                    5000
CLARK      ACCOUNTING                    2450
MILLER     ACCOUNTING                    1300
FORD       RESEARCH                      3000
SMITH      RESEARCH                       800
JONES      RESEARCH                      2975
JAMES      SALES                          950
TURNER     SALES                         1500
MARTIN     SALES                         2650
WARD       SALES                         1750
ALLEN      SALES                         1900
ENAME DNAME A.SAL+NVL(A.COMM,0)
BLAKE      SALES                         2850
15.列出所有部门的详细信息和部门人数。
SQL> select a.dname,a.loc,(select count(*) from emp where deptno=a.deptno) from dept a;
DNAME LOC (SELECTCOUNT(*)FROMEMPWHEREDEPTNO=A.DEPTNO)
ACCOUNTING     NEW YORK                                                3
RESEARCH       DALLAS                                                  3
SALES          CHICAGO                                                 6
16.列出各种工作的最低工资。
SQL> select job,avg(sal) from emp group by job;
JOB AVG(SAL)
CLERK     1016.66667
SALESMAN        1400
PRESIDENT       5000
MANAGER   2758.33333
ANALYST         3000
17.列出各个部门的MANAGER(经理)的最低薪金
SQL> select deptno,avg(sal) from emp where job='MANAGER' group by deptno;
DEPTNO   AVG(SAL)
    30       2850
    20       2975
    10       2450
18.列出所有员工的年工资,按年薪从低到高排序。
SQL> select ename,(sal+nvl(comm,0))12 from emp order by (sal+nvl(comm,0))12;
ENAME (SAL+NVL(COMM,0))*12
SMITH                      9600
JAMES                     11400
MILLER                    15600
TURNER                    18000
WARD                      21000
ALLEN                     22800
CLARK                     29400
MARTIN                    31800
BLAKE                     34200
JONES                     35700
FORD                      36000
ENAME (SAL+NVL(COMM,0))*12
KING                      60000
SQL> select ename,(sal+nvl(comm,0))*12  as salpersal from emp order by salpersal ;
ENAME SALPERSAL
SMITH            9600
JAMES           11400
MILLER          15600
TURNER          18000
WARD            21000
ALLEN           22800
CLARK           29400
MARTIN          31800
BLAKE           34200
JONES           35700
FORD            36000
ENAME SALPERSAL
KING 60000
12 rows selected.
19.找出EMP表中的姓名(ENAME)第三个字母是A 的员工姓名。
SQL> select ename from emp where substr(ename,3,1)='A';
BLAKE
CLARK
SQL> SELECT ENAME FROM SCOTT.EMP WHERE ENAME LIKE '__A%';
BLAKE
CLARK
ALLEN
MARTIN
ENAME TOTAL COMM
SMITH             800
JAMES             950
MILLER           1300
TURNER           1500          0
WARD             1750        500
ALLEN            1900        300
CLARK            2450
MARTIN           2650       1400
BLAKE            2850
JONES            2975
FORD             3000
ENAME TOTAL COMM
KING 5000
12 rows selected.
22.列出部门编号为20的所有职位
SQL> select job from emp where deptno=20;
CLERK
MANAGER
ANALYST
23.列出不属于SALES 的部门
SQL> select dname from dept where dname!='SALES'
2  ;
ACCOUNTING
RESEARCH
SQL> select dname from dept where dname<>'SALES';
ACCOUNTING
RESEARCH
ENAME TOTAL
KING             5000
FORD             3000
JONES            2975
BLAKE            2850
MARTIN           2650
CLARK            2450
ALLEN            1900
WARD             1750
JAMES             950
SMITH             800
10 rows selected.
ENAME JOB TOTAL
TURNER     SALESMAN       18000
MILLER     CLERK          15600
说明以下两条SQL语句的输出结果:
SELECT EMPNO,COMM FROM EMP WHERE COMM IS NULL;
SELECT EMPNO,COMM FROM EMP WHERE COMM = NULL;
SQL> SELECT EMPNO,COMM FROM EMP WHERE COMM IS NULL;
EMPNO COMM
7369
7566
7698
7782
7839
7900
7902
7934
8 rows selected.
SQL> SELECT EMPNO,COMM FROM EMP WHERE COMM = NULL;
no rows selected
IS NULL是判断某个字段是否为空,为空并不等价于为空字符串或为数字0;
而 =NULL 是判断某个值是否等于 NULL,NULL = NULL和NULL <> NULL都为 FALSE
SELECT  FROM DEPT;
SELECT  FROM EMP;
SELECT  FROM BONUS;
SELECT  FROM SALGRADE;
SQL> SELECT concat(concat('select * from ',table_name),';') FROM user_tables;
select  from DEPT;
select  from EMP;
select  from BONUS;
select  from SALGRADE;
ENAME SAL
ALLEN            1600
JONES            2975
BLAKE            2850
CLARK            2450
KING             5000
FORD             3000
6 rows selected.
不会报错,这儿存在隐式数据类型的。
SQL> conn hr/hr@pdbtest
Connected.
SQL> desc employees;
Name                                                  Null?    Type
EMPLOYEE_ID                                           NOT NULL NUMBER(6)
FIRST_NAME                                                     VARCHAR2(20)
LAST_NAME                                             NOT NULL VARCHAR2(25)
EMAIL                                                 NOT NULL VARCHAR2(25)
PHONE_NUMBER                                                   VARCHAR2(20)
HIRE_DATE                                             NOT NULL DATE
JOB_ID                                                NOT NULL VARCHAR2(10)
SALARY                                                         NUMBER(8,2)
COMMISSION_PCT                                                 NUMBER(2,2)
MANAGER_ID                                                     NUMBER(6)
DEPARTMENT_ID                                                  NUMBER(4)
SQL> desc DEPARTMENTS
Name                                                  Null?    Type
DEPARTMENT_ID                                         NOT NULL NUMBER(4)
DEPARTMENT_NAME                                       NOT NULL VARCHAR2(30)
MANAGER_ID                                                     NUMBER(6)
LOCATION_ID                                                    NUMBER(4)
SQL> desc REGIONS
Name                                                  Null?    Type
REGION_ID                                             NOT NULL NUMBER
REGION_NAME                                                    VARCHAR2(25)
29.让SELECT TO_CHAR(SALARY,'L99,999.99') FROM EMPLOYEES WHERE  ROWNUM < 5 输出结果的货币单位是¥和$。
SQL> SELECT TO_CHAR(SALARY,'L99,999.99') FROM EMPLOYEES WHERE  ROWNUM < 5;
      $24,000.00
      $17,000.00
      $17,000.00
       $9,000.00
30.列出前五位每个员工的名字,工资、涨薪后的的工资(涨幅为8%),以“元”为单位进行四舍五入。
SQL> select FIRST_NAME,SALARY,round(SALARY*1.08) from EMPLOYEES where rownum <6;
FIRST_NAME SALARY ROUND(SALARY*1.08)
Steven                    24000              25920
Neena                     17000              18360
Lex                       17000              18360
Alexander                  9000               9720
Bruce                      6000               6480
31.、找出谁是最高领导,将名字按大写形式显示。
SQL> select upper(FIRST_NAME||' '||LAST_NAME) from  EMPLOYEES where MANAGER_ID is null;
STEVEN KING
32.找出First_Name 为David,Last_Name为Austin 的直接领导名字。
SQL> select FIRST_NAME||' '||LAST_NAME from EMPLOYEES where EMPLOYEE_ID=(select MANAGER_ID from  EMPLOYEES where FIRST_NAME='David' and LAST_NAME='Austin');
Alexander Hunold
33.First_Name 为Alexander,LAST_NAME为Hunold领导谁
SQL> select FIRST_NAME||' '||LAST_NAME from EMPLOYEES where MANAGER_ID=(select EMPLOYEE_ID from  EMPLOYEES where FIRST_NAME='Alexander' and LAST_NAME='Hunold');
Bruce Ernst
David Austin
Valli Pataballa
Diana Lorentz
34.哪些员工的工资高于他直接上司的工资,列出员工的名字和工资,上司的名字和工资。
SQL> select FIRST_NAME||' '||LAST_NAME,salary,(select FIRST_NAME||' '||LAST_NAME from EMPLOYEES where EMPLOYEE_id=a.manager_id) as boss_name,(select salary from EMPLOYEES where EMPLOYEE_id=a.manager_id ) as boss_salary from EMPLOYEES a where a.salary>(select salary from EMPLOYEES where EMPLOYEE_id=a.manager_id);
| FIRST_NAME | '' | LAST SALARY BOSS_NAME BOSS_SALARY | 
|---|
Lisa Ozer                 11500 Gerald Cambrault           11000
Ellen Abel                11000 Eleni Zlotkey              10500
SQL> select a.FIRST_NAME||' '||a.LAST_NAME,a.salary,b.FIRST_NAME||' '||b.LAST_NAME,b.salary from  EMPLOYEES a join EMPLOYEES b on  b.EMPLOYEE_id=a.manager_id and a.salary>b.salary;
| A.FIRST_NAME | '' | A. SALARY B.FIRST_NAME | '' | B.LAST_NAME SALARY | 
|---|
Lisa Ozer                 11500 Gerald Cambrault                                    11000
Ellen Abel                11000 Eleni Zlotkey                                       10500
35.哪些员工和Chen(LAST_NAME)同部门
SQL> select  EMPLOYEE_ID,FIRST_NAME from EMPLOYEES where DEPARTMENT_ID=(select DEPARTMENT_ID from EMPLOYEES where  LAST_NAME='Chen') and  LAST_NAME!='Chen';
EMPLOYEE_ID FIRST_NAME
    108 Nancy
    109 Daniel
    111 Ismael
    112 Jose Manuel
    113 Luis
SQL> select EMPLOYEE_ID,FIRST_NAME from EMPLOYEES a join (select DEPARTMENT_ID from EMPLOYEES where LAST_NAME='Chen') b using(DEPARTMENT_ID) where LAST_NAME!='Chen';
EMPLOYEE_ID FIRST_NAME
    108 Nancy
    109 Daniel
    111 Ismael
    112 Jose Manuel
    113 Luis                
36.哪些员工跟De Haan(LAST_NAME)做一样职位
SQL> select EMPLOYEE_ID,FIRST_NAME from EMPLOYEES a join (select job_id from EMPLOYEES where LAST_NAME='De Haan') b using (job_id) where LAST_NAME!='De Haan'
2  ;
EMPLOYEE_ID FIRST_NAME
    101 Neena
SQL> select EMPLOYEE_ID,FIRST_NAME from EMPLOYEES a join (select job_id from EMPLOYEES where LAST_NAME='De Haan') b on a.job_id=b.job_id and LAST_NAME!='De Haan'
2  ;
EMPLOYEE_ID FIRST_NAME
    101 Neena
37.哪些员工跟Hall(LAST_NAME)不在同一个部门。
SQL> select EMPLOYEE_ID,FIRST_NAME from EMPLOYEES a join (select DEPARTMENT_ID from EMPLOYEES where LAST_NAME='Hall') b on a.DEPARTMENT_ID!=b.DEPARTMENT_ID ;
EMPLOYEE_ID FIRST_NAME
    100 Steven
    101 Neena
    102 Lex
    103 Alexander
    104 Bruce
    105 David
    106 Valli
    107 Diana
    108 Nancy
    109 Daniel
    110 John
EMPLOYEE_ID FIRST_NAME
    111 Ismael
    112 Jose Manuel
    113 Luis
    114 Den
    115 Alexander
    116 Shelli
    117 Sigal
    118 Guy
    119 Karen
    120 Matthew
    121 Adam
EMPLOYEE_ID FIRST_NAME
    122 Payam
    123 Shanta
    124 Kevin
    125 Julia
    126 Irene
    127 James
    128 Steven
    129 Laura
    130 Mozhe
    131 James
    132 TJ
EMPLOYEE_ID FIRST_NAME
    133 Jason
    134 Michael
    135 Ki
    136 Hazel
    137 Renske
    138 Stephen
    139 John
    140 Joshua
    141 Trenna
    142 Curtis
    143 Randall
EMPLOYEE_ID FIRST_NAME
    144 Peter
    180 Winston
    181 Jean
    182 Martha
    183 Girard
    184 Nandita
    185 Alexis
    186 Julia
    187 Anthony
    188 Kelly
    189 Jennifer
EMPLOYEE_ID FIRST_NAME
    190 Timothy
    191 Randall
    192 Sarah
    193 Britney
    194 Samuel
    195 Vance
    196 Alana
    197 Kevin
    198 Donald
    199 Douglas
    200 Jennifer
EMPLOYEE_ID FIRST_NAME
    201 Michael
    202 Pat
    203 Susan
    204 Hermann
    205 Shelley
    206 William
72 rows selected.
38.哪些员工跟William(FIRST_NAME)、Smith(LAST_NAME)做不一样的职位。
SQL> select EMPLOYEE_ID,FIRST_NAME from EMPLOYEES a join (select job_ID from EMPLOYEES where FIRST_NAME='William'and LAST_NAME='Smith') b on a.job_ID!=b.job_ID ;
EMPLOYEE_ID FIRST_NAME
    100 Steven
    101 Neena
    102 Lex
    103 Alexander
    104 Bruce
    105 David
    106 Valli
    107 Diana
    108 Nancy
    109 Daniel
    110 John
EMPLOYEE_ID FIRST_NAME
    111 Ismael
    112 Jose Manuel
    113 Luis
    114 Den
    115 Alexander
    116 Shelli
    117 Sigal
    118 Guy
    119 Karen
    120 Matthew
    121 Adam
EMPLOYEE_ID FIRST_NAME
    122 Payam
    123 Shanta
    124 Kevin
    125 Julia
    126 Irene
    127 James
    128 Steven
    129 Laura
    130 Mozhe
    131 James
    132 TJ
EMPLOYEE_ID FIRST_NAME
    133 Jason
    134 Michael
    135 Ki
    136 Hazel
    137 Renske
    138 Stephen
    139 John
    140 Joshua
    141 Trenna
    142 Curtis
    143 Randall
EMPLOYEE_ID FIRST_NAME
    144 Peter
    145 John
    146 Karen
    147 Alberto
    148 Gerald
    149 Eleni
    180 Winston
    181 Jean
    182 Martha
    183 Girard
    184 Nandita
EMPLOYEE_ID FIRST_NAME
    185 Alexis
    186 Julia
    187 Anthony
    188 Kelly
    189 Jennifer
    190 Timothy
    191 Randall
    192 Sarah
    193 Britney
    194 Samuel
    195 Vance
EMPLOYEE_ID FIRST_NAME
    196 Alana
    197 Kevin
    198 Donald
    199 Douglas
    200 Jennifer
    201 Michael
    202 Pat
    203 Susan
    204 Hermann
    205 Shelley
    206 William
77 rows selected.
39.显示有提成的员工的信息:名字、提成、所在部门名称、所在地区的名称。
SQL> select FIRST_NAME||' '||LAST_NAME, COMMISSION_PCT from EMPLOYEES a  join (DEPARTMENTS b join LOCATIONS c using(LOCATION_ID))  using(DEPARTMENT_ID) where COMMISSION_PCT is not null;
| FIRST_NAME | '' | LAST COMMISSION_PCT | 
|---|
John Russell                     .4
Karen Partners                   .3
Alberto Errazuriz                .3
Gerald Cambrault                 .3
Eleni Zlotkey                    .2
Peter Tucker                     .3
David Bernstein                 .25
Peter Hall                      .25
Christopher Olsen                .2
Nanette Cambrault                .2
Oliver Tuvault                  .15
| FIRST_NAME | '' | LAST COMMISSION_PCT | 
|---|
Janette King                    .35
Patrick Sully                   .35
Allan McEwen                    .35
Lindsey Smith                    .3
Louise Doran                     .3
Sarath Sewall                   .25
Clara Vishney                   .25
Danielle Greene                 .15
Mattea Marvins                   .1
David Lee                        .1
Sundar Ande                      .1
| FIRST_NAME | '' | LAST COMMISSION_PCT | 
|---|
Amit Banda                       .1
Lisa Ozer                       .25
Harrison Bloom                   .2
Tayler Fox                       .2
William Smith                   .15
Elizabeth Bates                 .15
Sundita Kumar                    .1
Ellen Abel                       .3
Alyssa Hutton                   .25
Jonathon Taylor                  .2
Jack Livingston                  .2
| FIRST_NAME | '' | LAST COMMISSION_PCT | 
|---|
Charles Johnson .1
34 rows selected.
SQL> select FIRST_NAME||' '||LAST_NAME, COMMISSION_PCT from EMPLOYEES a ,DEPARTMENTS b,HR.LOCATIONS c where a.DEPARTMENT_ID = b.DEPARTMENT_ID and a.COMMISSION_PCT is not null and b.LOCATION_ID = c.LOCATION_ID;
| FIRST_NAME | '' | LAST COMMISSION_PCT | 
|---|
John Russell                     .4
Karen Partners                   .3
Alberto Errazuriz                .3
Gerald Cambrault                 .3
Eleni Zlotkey                    .2
Peter Tucker                     .3
David Bernstein                 .25
Peter Hall                      .25
Christopher Olsen                .2
Nanette Cambrault                .2
Oliver Tuvault                  .15
| FIRST_NAME | '' | LAST COMMISSION_PCT | 
|---|
Janette King                    .35
Patrick Sully                   .35
Allan McEwen                    .35
Lindsey Smith                    .3
Louise Doran                     .3
Sarath Sewall                   .25
Clara Vishney                   .25
Danielle Greene                 .15
Mattea Marvins                   .1
David Lee                        .1
Sundar Ande                      .1
| FIRST_NAME | '' | LAST COMMISSION_PCT | 
|---|
Amit Banda                       .1
Lisa Ozer                       .25
Harrison Bloom                   .2
Tayler Fox                       .2
William Smith                   .15
Elizabeth Bates                 .15
Sundita Kumar                    .1
Ellen Abel                       .3
Alyssa Hutton                   .25
Jonathon Taylor                  .2
Jack Livingston                  .2
| FIRST_NAME | '' | LAST COMMISSION_PCT | 
|---|
Charles Johnson .1
34 rows selected.
40.示Executive部门有哪些职位
SQL> SELECT DISTINCT JOB_ID FROM EMPLOYEES a join DEPARTMENTS b using(DEPARTMENT_ID) where b.DEPARTMENT_NAME = 'Executive';
AD_VP
AD_PRES
41.整个公司中,最高工资和最低工资相差多少。
SQL> SELECT MAX(SALARY) - MIN(SALARY) FROM EMPLOYEES;
              21900
42.提成大于0 的人数。
SQL> SELECT count(*) FROM EMPLOYEES where COMMISSION_PCT>0;
    35
43.显示整个公司的最高工资、最低工资、工资总和、平均工资保留到整数位。
SQL> SELECT MAX(SALARY),MIN(SALARY),sum(SALARY),avg(SALARY) FROM EMPLOYEES;
MAX(SALARY) MIN(SALARY) SUM(SALARY) AVG(SALARY)
  24000        2100      691416  6461.83178
44.整个公司有多少个领导。
SQL> SELECT count(DISTINCT(NVL(manager_id,'1'))) FROM employees e;
                              19
45.列出在同一部门入职日期晚但工资高于其他同事的员工:
名字、工资、入职日期。
SQL> select distinct a.FIRST_NAME,a.SALARY,a.HIRE_DATE from employees a join employees b on a.DEPARTMENT_ID=b.DEPARTMENT_ID and a.SALARY>b.SALARY and a.HIRE_DATE>b.HIRE_DATE order by a.salary desc;
FIRST_NAME SALARY HIRE_DATE
Steven                    24000 2003-06-17 00:00:00
John                      14000 2004-10-01 00:00:00
Karen                     13500 2005-01-05 00:00:00
Nancy                     12008 2002-08-17 00:00:00
Alberto                   12000 2005-03-10 00:00:00
Lisa                      11500 2005-03-11 00:00:00
Ellen                     11000 2004-05-11 00:00:00
Gerald                    11000 2007-10-15 00:00:00
Clara                     10500 2005-11-11 00:00:00
Eleni                     10500 2008-01-29 00:00:00
Harrison                  10000 2006-03-23 00:00:00
FIRST_NAME SALARY HIRE_DATE
Peter                     10000 2005-01-30 00:00:00
Tayler                     9600 2006-01-24 00:00:00
Danielle                   9500 2007-03-19 00:00:00
David                      9500 2005-03-24 00:00:00
Alexander                  9000 2006-01-03 00:00:00
Peter                      9000 2005-08-20 00:00:00
Alyssa                     8800 2005-03-19 00:00:00
Jonathon                   8600 2006-03-24 00:00:00
Jack                       8400 2006-04-23 00:00:00
Adam                       8200 2005-04-10 00:00:00
Christopher                8000 2006-03-30 00:00:00
FIRST_NAME SALARY HIRE_DATE
Matthew                    8000 2004-07-18 00:00:00
Jose Manuel                7800 2006-03-07 00:00:00
Nanette                    7500 2006-12-09 00:00:00
William                    7400 2007-02-23 00:00:00
Elizabeth                  7300 2007-03-24 00:00:00
Mattea                     7200 2008-01-24 00:00:00
David                      6800 2008-02-23 00:00:00
Shanta                     6500 2005-10-10 00:00:00
Sundar                     6400 2008-03-24 00:00:00
Bruce                      6000 2007-05-21 00:00:00
Kevin                      5800 2007-11-16 00:00:00
FIRST_NAME SALARY HIRE_DATE
Nandita                    4200 2004-01-27 00:00:00
Alexis                     4100 2005-02-20 00:00:00
Sarah                      4000 2004-02-04 00:00:00
Britney                    3900 2005-03-03 00:00:00
Kelly                      3800 2005-06-14 00:00:00
Jennifer                   3600 2005-08-13 00:00:00
Julia                      3400 2006-06-24 00:00:00
Laura                      3300 2005-08-20 00:00:00
Julia                      3200 2005-07-16 00:00:00
Samuel                     3200 2006-07-01 00:00:00
Stephen                    3200 2005-10-26 00:00:00
FIRST_NAME SALARY HIRE_DATE
Winston                    3200 2006-01-24 00:00:00
Alana                      3100 2006-04-24 00:00:00
Jean                       3100 2006-02-23 00:00:00
Anthony                    3000 2007-02-07 00:00:00
Kevin                      3000 2006-05-23 00:00:00
Michael                    2900 2006-08-26 00:00:00
Shelli                     2900 2005-12-24 00:00:00
Timothy                    2900 2006-07-11 00:00:00
Girard                     2800 2008-02-03 00:00:00
Mozhe                      2800 2005-10-30 00:00:00
Vance                      2800 2007-03-17 00:00:00
FIRST_NAME SALARY HIRE_DATE
Irene                      2700 2006-09-28 00:00:00
John                       2700 2006-02-12 00:00:00
Donald                     2600 2007-06-21 00:00:00
Douglas                    2600 2008-01-13 00:00:00
Randall                    2600 2006-03-15 00:00:00
Martha                     2500 2007-06-21 00:00:00
Randall                    2500 2007-12-19 00:00:00
Ki                         2400 2007-12-12 00:00:00
Hazel                      2200 2008-02-06 00:00:00
Steven                     2200 2008-03-08 00:00:00
65 rows selected.
SQL> select distinct a.FIRST_NAME,a.SALARY,a.HIRE_DATE from employees a join employees b using(DEPARTMENT_ID) where a.SALARY>b.SALARY and a.HIRE_DATE>b.HIRE_DATE order by SALARY desc;
FIRST_NAME SALARY HIRE_DATE
Steven                    24000 2003-06-17 00:00:00
John                      14000 2004-10-01 00:00:00
Karen                     13500 2005-01-05 00:00:00
Nancy                     12008 2002-08-17 00:00:00
Alberto                   12000 2005-03-10 00:00:00
Lisa                      11500 2005-03-11 00:00:00
Ellen                     11000 2004-05-11 00:00:00
Gerald                    11000 2007-10-15 00:00:00
Clara                     10500 2005-11-11 00:00:00
Eleni                     10500 2008-01-29 00:00:00
Harrison                  10000 2006-03-23 00:00:00
FIRST_NAME SALARY HIRE_DATE
Peter                     10000 2005-01-30 00:00:00
Tayler                     9600 2006-01-24 00:00:00
Danielle                   9500 2007-03-19 00:00:00
David                      9500 2005-03-24 00:00:00
Alexander                  9000 2006-01-03 00:00:00
Peter                      9000 2005-08-20 00:00:00
Alyssa                     8800 2005-03-19 00:00:00
Jonathon                   8600 2006-03-24 00:00:00
Jack                       8400 2006-04-23 00:00:00
Adam                       8200 2005-04-10 00:00:00
Christopher                8000 2006-03-30 00:00:00
FIRST_NAME SALARY HIRE_DATE
Matthew                    8000 2004-07-18 00:00:00
Jose Manuel                7800 2006-03-07 00:00:00
Nanette                    7500 2006-12-09 00:00:00
William                    7400 2007-02-23 00:00:00
Elizabeth                  7300 2007-03-24 00:00:00
Mattea                     7200 2008-01-24 00:00:00
David                      6800 2008-02-23 00:00:00
Shanta                     6500 2005-10-10 00:00:00
Sundar                     6400 2008-03-24 00:00:00
Bruce                      6000 2007-05-21 00:00:00
Kevin                      5800 2007-11-16 00:00:00
FIRST_NAME SALARY HIRE_DATE
Nandita                    4200 2004-01-27 00:00:00
Alexis                     4100 2005-02-20 00:00:00
Sarah                      4000 2004-02-04 00:00:00
Britney                    3900 2005-03-03 00:00:00
Kelly                      3800 2005-06-14 00:00:00
Jennifer                   3600 2005-08-13 00:00:00
Julia                      3400 2006-06-24 00:00:00
Laura                      3300 2005-08-20 00:00:00
Julia                      3200 2005-07-16 00:00:00
Samuel                     3200 2006-07-01 00:00:00
Stephen                    3200 2005-10-26 00:00:00
FIRST_NAME SALARY HIRE_DATE
Winston                    3200 2006-01-24 00:00:00
Alana                      3100 2006-04-24 00:00:00
Jean                       3100 2006-02-23 00:00:00
Anthony                    3000 2007-02-07 00:00:00
Kevin                      3000 2006-05-23 00:00:00
Michael                    2900 2006-08-26 00:00:00
Shelli                     2900 2005-12-24 00:00:00
Timothy                    2900 2006-07-11 00:00:00
Girard                     2800 2008-02-03 00:00:00
Mozhe                      2800 2005-10-30 00:00:00
Vance                      2800 2007-03-17 00:00:00
FIRST_NAME SALARY HIRE_DATE
Irene                      2700 2006-09-28 00:00:00
John                       2700 2006-02-12 00:00:00
Donald                     2600 2007-06-21 00:00:00
Douglas                    2600 2008-01-13 00:00:00
Randall                    2600 2006-03-15 00:00:00
Martha                     2500 2007-06-21 00:00:00
Randall                    2500 2007-12-19 00:00:00
Ki                         2400 2007-12-12 00:00:00
Hazel                      2200 2008-02-06 00:00:00
Steven                     2200 2008-03-08 00:00:00
65 rows selected.
46.各个部门平均、最大、最小工资、人数,按照部门号升序排列。
47.SQL> select distinct DEPARTMENT_ID,max(SALARY),min(salary),count(*) from employees group by DEPARTMENT_ID order by DEPARTMENT_ID;
DEPARTMENT_ID MAX(SALARY) MIN(SALARY) COUNT(*)
       10        4400        4400          1
       20       13000        6000          2
       30       11000        2500          6
       40        6500        6500          1
       50        8200        2100         45
       60        9000        4200          5
       70       10000       10000          1
       80       14000        6100         34
       90       24000       17000          3
      100       12008        6900          6
      110       12008        8300          2
DEPARTMENT_ID MAX(SALARY) MIN(SALARY) COUNT(*)
                 7000        7000          1
12 rows selected.
47.各个部门中工资大于5000的员工人数
SQL> select distinct DEPARTMENT_ID,count(*) from employees where salary>5000 group by DEPARTMENT_ID ;
DEPARTMENT_ID COUNT(*)
      100          6
       30          1
                   1
       90          3
       20          2
       70          1
      110          2
       50          5
       80         34
       40          1
       60          2
11 rows selected.
48.各个部门平均工资和人数,按照部门名字升序排列
SQL> select DEPARTMENT_name,avg(a.salary),count(*) from employees a left join DEPARTMENTS b using (DEPARTMENT_ID) group by DEPARTMENT_NAME order by b.DEPARTMENT_NAME  ;
DEPARTMENT_NAME AVG(A.SALARY) COUNT(*)
Accounting                             10154          2
Administration                          4400          1
Executive                         19333.3333          3
Finance                           8601.33333          6
Human Resources                         6500          1
IT                                      5760          5
Marketing                               9500          2
Public Relations                       10000          1
Purchasing                              4150          6
Sales                             8955.88235         34
Shipping                          3475.55556         45
DEPARTMENT_NAME AVG(A.SALARY) COUNT(*)
                                    7000          1
12 rows selected.
SQL> select avg(a.salary),count(*) from employees a left join DEPARTMENTS b on a.DEPARTMENT_ID=b.DEPARTMENT_id group by DEPARTMENT_NAME order by b.DEPARTMENT_NAME;
AVG(A.SALARY) COUNT(*)
    10154          2
     4400          1
19333.3333          3
8601.33333          6
6500          1
5760          5
9500          2
10000          1
4150          6
8955.88235         34
3475.55556         45
AVG(A.SALARY) COUNT(*)
     7000          1
49.列出每个部门中有同样工资的员工的统计信息,
列出他们的部门号,工资,人数。
SQL> select DEPARTMENT_id,salary,count() from employees  group by DEPARTMENT_id, salary having count()>1;
DEPARTMENT_ID SALARY COUNT(*)
       90      17000          2
       50       3200          4
       50       2200          2
       50       3600          2
       80      10500          2
       80       9000          2
       50       2700          2
       50       3100          3
       80      10000          3
       50       3000          2
       60       4800          2
DEPARTMENT_ID SALARY COUNT(*)
       50       3300          2
       80       6200          2
       50       2800          3
       50       2500          5
       50       2600          3
       50       2400          2
       80       9500          3
       80       7500          2
       80      11000          2
       80       7000          2
       50       2900          2
DEPARTMENT_ID SALARY COUNT(*)
       80       8000          2
23 rows selected.
SQL>  SELECT EMP1.DEPARTMENT_ID,EMP1.SALARY,COUNT(*) CNT
2    FROM   EMPLOYEES EMP1,EMPLOYEES EMP2
3    WHERE  EMP1.DEPARTMENT_ID = EMP2.DEPARTMENT_ID AND
4            EMP1.SALARY = EMP2.SALARY
5            AND EMP1.EMPLOYEE_ID <> EMP2.EMPLOYEE_ID
6    GROUP BY EMP1.DEPARTMENT_ID,EMP1.SALARY;
DEPARTMENT_ID SALARY CNT
       90      17000          2
       50       3200         12
       50       2200          2
       50       3600          2
       80      10500          2
       80       9000          2
       50       2700          2
       50       3100          6
       80      10000          6
       50       3000          2
       60       4800          2
DEPARTMENT_ID SALARY CNT
       50       3300          2
       80       6200          2
       50       2800          6
       50       2500         20
       50       2600          6
       50       2400          2
       80       9500          6
       80       7500          2
       80      11000          2
       80       7000          2
       50       2900          2
DEPARTMENT_ID SALARY CNT
       80       8000          2
23 rows selected.
50.列出同部门中工资高于1000 的员工数量超过2 人的部门,
显示部门名字、地区名称。
SQL> select b.DEPARTMENT_NAME,c.CITY,count() from EMPLOYEES a join (DEPARTMENTS b join LOCATIONS c using(LOCATION_ID)) using(DEPARTMENT_ID) where a.SALARY > 1000 GROUP BY b.DEPARTMENT_NAME,c.CITY having count()>2;
DEPARTMENT_NAME CITY COUNT(*)
IT                             Southlake                               5
Sales                          Oxford                                 34
Shipping                       South San Francisco                    45
Purchasing                     Seattle                                 6
Executive                      Seattle                                 3
Finance                        Seattle                                 6
6 rows selected.
51.哪些员工的工资,高于整个公司的平均工资,
列出员工的名字和工资(降序)
SQL> select first_name||'  '||last_name,salary from EMPLOYEES where salary>(select avg(salary) from EMPLOYEES) order by salary desc;
| FIRST_NAME | '' | LAST SALARY | 
|---|
Steven  King              24000
Neena  Kochhar            17000
Lex  De Haan              17000
John  Russell             14000
Karen  Partners           13500
Michael  Hartstein        13000
Nancy  Greenberg          12008
Shelley  Higgins          12008
Alberto  Errazuriz        12000
Lisa  Ozer                11500
Ellen  Abel               11000
| FIRST_NAME | '' | LAST SALARY | 
|---|
Den  Raphaely             11000
Gerald  Cambrault         11000
Clara  Vishney            10500
Eleni  Zlotkey            10500
Peter  Tucker             10000
Harrison  Bloom           10000
Janette  King             10000
Hermann  Baer             10000
Tayler  Fox                9600
David  Bernstein           9500
Danielle  Greene           9500
| FIRST_NAME | '' | LAST SALARY | 
|---|
Patrick  Sully             9500
Daniel  Faviet             9000
Alexander  Hunold          9000
Peter  Hall                9000
Allan  McEwen              9000
Alyssa  Hutton             8800
Jonathon  Taylor           8600
Jack  Livingston           8400
William  Gietz             8300
Adam  Fripp                8200
John  Chen                 8200
| FIRST_NAME | '' | LAST SALARY | 
|---|
Christopher  Olsen         8000
Matthew  Weiss             8000
Lindsey  Smith             8000
Payam  Kaufling            7900
Jose Manuel  Urman         7800
Ismael  Sciarra            7700
Louise  Doran              7500
Nanette  Cambrault         7500
William  Smith             7400
Elizabeth  Bates           7300
Mattea  Marvins            7200
| FIRST_NAME | '' | LAST SALARY | 
|---|
Oliver  Tuvault            7000
Kimberely  Grant           7000
Sarath  Sewall             7000
Luis  Popp                 6900
David  Lee                 6800
Susan  Mavris              6500
Shanta  Vollman            6500
51 rows selected.
52.哪些员工的工资,介于50号 和80号 部门平均工资之间
SQL> select first_name||'  '||last_name,salary from EMPLOYEES where salary between (select avg(salary) from EMPLOYEES where DEPARTMENT_ID = 50) and (SELECT AVG(SALARY) FROM EMPLOYEES WHERE DEPARTMENT_ID = 80);
| FIRST_NAME | '' | LAST SALARY | 
|---|
Bruce  Ernst               6000
David  Austin              4800
Valli  Pataballa           4800
Diana  Lorentz             4200
John  Chen                 8200
Ismael  Sciarra            7700
Jose Manuel  Urman         7800
Luis  Popp                 6900
Matthew  Weiss             8000
Adam  Fripp                8200
Payam  Kaufling            7900
| FIRST_NAME | '' | LAST SALARY | 
|---|
Shanta  Vollman            6500
Kevin  Mourgos             5800
Renske  Ladwig             3600
Trenna  Rajs               3500
Christopher  Olsen         8000
Nanette  Cambrault         7500
Oliver  Tuvault            7000
Lindsey  Smith             8000
Louise  Doran              7500
Sarath  Sewall             7000
Mattea  Marvins            7200
| FIRST_NAME | '' | LAST SALARY | 
|---|
David  Lee                 6800
Sundar  Ande               6400
Amit  Banda                6200
William  Smith             7400
Elizabeth  Bates           7300
Sundita  Kumar             6100
Alyssa  Hutton             8800
Jonathon  Taylor           8600
Jack  Livingston           8400
Kimberely  Grant           7000
Charles  Johnson           6200
| FIRST_NAME | '' | LAST SALARY | 
|---|
Nandita  Sarchand          4200
Alexis  Bull               4100
Kelly  Chung               3800
Jennifer  Dilly            3600
Sarah  Bell                4000
Britney  Everett           3900
Jennifer  Whalen           4400
Pat  Fay                   6000
Susan  Mavris              6500
William  Gietz             8300
43 rows selected.
53.所在部门平均工资高于5000 的员工名字。
SQL> select first_name||'  '||last_name,salary from EMPLOYEES where DEPARTMENT_ID IN (select distinct DEPARTMENT_ID from EMPLOYEES group by DEPARTMENT_ID having avg(salary)>5000);
| FIRST_NAME | '' | LAST SALARY | 
|---|
Steven  King              24000
Neena  Kochhar            17000
Lex  De Haan              17000
Alexander  Hunold          9000
Bruce  Ernst               6000
David  Austin              4800
Valli  Pataballa           4800
Diana  Lorentz             4200
Nancy  Greenberg          12008
Daniel  Faviet             9000
John  Chen                 8200
| FIRST_NAME | '' | LAST SALARY | 
|---|
Ismael  Sciarra            7700
Jose Manuel  Urman         7800
Luis  Popp                 6900
John  Russell             14000
Karen  Partners           13500
Alberto  Errazuriz        12000
Gerald  Cambrault         11000
Eleni  Zlotkey            10500
Peter  Tucker             10000
David  Bernstein           9500
Peter  Hall                9000
| FIRST_NAME | '' | LAST SALARY | 
|---|
Christopher  Olsen         8000
Nanette  Cambrault         7500
Oliver  Tuvault            7000
Janette  King             10000
Patrick  Sully             9500
Allan  McEwen              9000
Lindsey  Smith             8000
Louise  Doran              7500
Sarath  Sewall             7000
Clara  Vishney            10500
Danielle  Greene           9500
| FIRST_NAME | '' | LAST SALARY | 
|---|
Mattea  Marvins            7200
David  Lee                 6800
Sundar  Ande               6400
Amit  Banda                6200
Lisa  Ozer                11500
Harrison  Bloom           10000
Tayler  Fox                9600
William  Smith             7400
Elizabeth  Bates           7300
Sundita  Kumar             6100
Ellen  Abel               11000
| FIRST_NAME | '' | LAST SALARY | 
|---|
Alyssa  Hutton             8800
Jonathon  Taylor           8600
Jack  Livingston           8400
Charles  Johnson           6200
Michael  Hartstein        13000
Pat  Fay                   6000
Susan  Mavris              6500
Hermann  Baer             10000
Shelley  Higgins          12008
William  Gietz             8300
SQL>  select first_name||'  '||last_name,salary from EMPLOYEES join (select distinct DEPARTMENT_ID from EMPLOYEES group by DEPARTMENT_ID having avg(salary)>5000) using(DEPARTMENT_ID);
| FIRST_NAME | '' | LAST SALARY | 
|---|
Steven  King              24000
Neena  Kochhar            17000
Lex  De Haan              17000
Alexander  Hunold          9000
Bruce  Ernst               6000
David  Austin              4800
Valli  Pataballa           4800
Diana  Lorentz             4200
Nancy  Greenberg          12008
Daniel  Faviet             9000
John  Chen                 8200
| FIRST_NAME | '' | LAST SALARY | 
|---|
Ismael  Sciarra            7700
Jose Manuel  Urman         7800
Luis  Popp                 6900
John  Russell             14000
Karen  Partners           13500
Alberto  Errazuriz        12000
Gerald  Cambrault         11000
Eleni  Zlotkey            10500
Peter  Tucker             10000
David  Bernstein           9500
Peter  Hall                9000
| FIRST_NAME | '' | LAST SALARY | 
|---|
Christopher  Olsen         8000
Nanette  Cambrault         7500
Oliver  Tuvault            7000
Janette  King             10000
Patrick  Sully             9500
Allan  McEwen              9000
Lindsey  Smith             8000
Louise  Doran              7500
Sarath  Sewall             7000
Clara  Vishney            10500
Danielle  Greene           9500
| FIRST_NAME | '' | LAST SALARY | 
|---|
Mattea  Marvins            7200
David  Lee                 6800
Sundar  Ande               6400
Amit  Banda                6200
Lisa  Ozer                11500
Harrison  Bloom           10000
Tayler  Fox                9600
William  Smith             7400
Elizabeth  Bates           7300
Sundita  Kumar             6100
Ellen  Abel               11000
| FIRST_NAME | '' | LAST SALARY | 
|---|
Alyssa  Hutton             8800
Jonathon  Taylor           8600
Jack  Livingston           8400
Charles  Johnson           6200
Michael  Hartstein        13000
Pat  Fay                   6000
Susan  Mavris              6500
Hermann  Baer             10000
Shelley  Higgins          12008
William  Gietz             8300
54 rows selected.
54.列出各个部门中工资最高的员工的信息:名字、部门号、工资。
55.SQL>  select first_name||'  '||last_name,DEPARTMENT_ID,salary from EMPLOYEES where (DEPARTMENT_ID,salary) in (SELECT DEPARTMENT_ID,MAX(SALARY) FROM EMPLOYEES GROUP BY DEPARTMENT_ID);
| FIRST_NAME | '' | LAST DEPARTMENT_ID SALARY | 
|---|
Nancy  Greenberg               100      12008
Den  Raphaely                   30      11000
Steven  King                    90      24000
Michael  Hartstein              20      13000
Hermann  Baer                   70      10000
Shelley  Higgins               110      12008
Adam  Fripp                     50       8200
John  Russell                   80      14000
Susan  Mavris                   40       6500
Alexander  Hunold               60       9000
Jennifer  Whalen                10       4400
11 rows selected.
SQL>  select first_name||'  '||last_name,DEPARTMENT_ID,salary from EMPLOYEES  join (SELECT DEPARTMENT_ID,MAX(SALARY) as salary FROM EMPLOYEES GROUP BY DEPARTMENT_ID) using (DEPARTMENT_ID,salary);
| FIRST_NAME | '' | LAST DEPARTMENT_ID SALARY | 
|---|
Steven  King                    90      24000
Alexander  Hunold               60       9000
Nancy  Greenberg               100      12008
Den  Raphaely                   30      11000
Adam  Fripp                     50       8200
John  Russell                   80      14000
Jennifer  Whalen                10       4400
Michael  Hartstein              20      13000
Susan  Mavris                   40       6500
Hermann  Baer                   70      10000
Shelley  Higgins               110      12008
11 rows selected.
55.最高的部门平均工资是多少。
SQL> select max(AVGSALARY) from (SELECT DEPARTMENT_ID,AVG(SALARY) AVGSALARY FROM EMPLOYEES GROUP BY DEPARTMENT_ID);
19333.3333
19334.SQL> select max(avg(salary))
2  from employees
3  group by department_id;
  19333.3333
56.哪些部门的人数比90 号部门的人数多。
SQL> select  department_id, count() from employees group by department_id having count()>(select count(*) from employees where department_id=90);
DEPARTMENT_ID COUNT(*)
      100          6
       30          6
       50         45
       80         34
       60          5
57.Den(FIRST_NAME)、Raphaely(LAST_NAME)的领导是谁(非关联子查询)
SQL> select  first_name || ' '||last_name from employees where employee_ID = (select manager_ID from employees where FIRST_NAME='Den' and LAST_NAME='Raphaely');
Steven King
SQL> select first_name || ' '||last_name from employees where employee_ID in (select manager_ID from employees where FIRST_NAME='Den' and LAST_NAME='Raphaely');
Steven King
58.Den(FIRST_NAME)、Raphaely(LAST_NAME) 领导谁(非关联子查询)。
SQL> select  first_name || ' '||last_name from employees where MANAGER_ID in (select EMPLOYEE_ID from employees where FIRST_NAME='Den' and LAST_NAME='Raphaely');
Alexander Khoo
Shelli Baida
Sigal Tobias
Guy Himuro
Karen Colmenares
SQL> select  first_name || ' '||last_name from employees where MANAGER_ID = (select EMPLOYEE_ID from employees where FIRST_NAME='Den' and LAST_NAME='Raphaely');
Alexander Khoo
Shelli Baida
Sigal Tobias
Guy Himuro
Karen Colmenares
59.Den(FIRST_NAME)、Raphaely(LAST_NAME) 的领导是谁(关联子查询)。
SQL> SELECT FIRST_NAME || ' ' || LAST_NAME
2   FROM EMPLOYEES EMP1
3  WHERE EXISTS (
4   SELECT 1 FROM EMPLOYEES EMP2
5  WHERE FIRST_NAME = 'Den'
6  AND LAST_NAME  = 'Raphaely'
7  AND EMP1.EMPLOYEE_ID = EMP2.MANAGER_ID);
Steven King
60.Den(FIRST_NAME)、Raphaely(LAST_NAME) 领导谁(关联子查询)
SQL> SELECT FIRST_NAME || ' ' || LAST_NAME
2   FROM EMPLOYEES EMP1
3  WHERE EXISTS (
4   SELECT 1 FROM EMPLOYEES EMP2
5  WHERE FIRST_NAME = 'Den'
6  AND LAST_NAME  = 'Raphaely'
7  AND EMP2.EMPLOYEE_ID = EMP1.MANAGER_ID);
Alexander Khoo
Shelli Baida
Sigal Tobias
Guy Himuro
Karen Colmenares。
61.列出在同一部门共事,入职日期晚但工资高于其他同事的员工:
名字、工资、入职日期(关联子查询)。
SQL> SELECT FIRST_NAME || ' ' || LAST_NAME,salary,HIRE_DATE
2   FROM EMPLOYEES EMP1
3  WHERE EXISTS (
4   SELECT 1 FROM EMPLOYEES EMP2
5  WHERE EMP1.HIRE_DATE>EMP2.HIRE_DATE and EMP1.salary>EMP2.salary
6  AND EMP1.DEPARTMENT_ID = EMP2.DEPARTMENT_ID);
| FIRST_NAME | '' | LAST SALARY HIRE_DATE | 
|---|
Steven King               24000 2003-06-17 00:00:00
Alexander Hunold           9000 2006-01-03 00:00:00
Bruce Ernst                6000 2007-05-21 00:00:00
Nancy Greenberg           12008 2002-08-17 00:00:00
Jose Manuel Urman          7800 2006-03-07 00:00:00
Shelli Baida               2900 2005-12-24 00:00:00
Adam Fripp                 8200 2005-04-10 00:00:00
Matthew Weiss              8000 2004-07-18 00:00:00
Shanta Vollman             6500 2005-10-10 00:00:00
Kevin Mourgos              5800 2007-11-16 00:00:00
Laura Bissot               3300 2005-08-20 00:00:00
| FIRST_NAME | '' | LAST SALARY HIRE_DATE | 
|---|
Julia Dellinger            3400 2006-06-24 00:00:00
Jennifer Dilly             3600 2005-08-13 00:00:00
Girard Geoni               2800 2008-02-03 00:00:00
Anthony Cabrio             3000 2007-02-07 00:00:00
Vance Jones                2800 2007-03-17 00:00:00
Martha Sullivan            2500 2007-06-21 00:00:00
Randall Perkins            2500 2007-12-19 00:00:00
Donald OConnell            2600 2007-06-21 00:00:00
Douglas Grant              2600 2008-01-13 00:00:00
Michael Rogers             2900 2006-08-26 00:00:00
Winston Taylor             3200 2006-01-24 00:00:00
| FIRST_NAME | '' | LAST SALARY HIRE_DATE | 
|---|
Jean Fleaur                3100 2006-02-23 00:00:00
Timothy Gates              2900 2006-07-11 00:00:00
Samuel McCain              3200 2006-07-01 00:00:00
Alana Walsh                3100 2006-04-24 00:00:00
Kevin Feeney               3000 2006-05-23 00:00:00
Julia Nayer                3200 2005-07-16 00:00:00
Irene Mikkilineni          2700 2006-09-28 00:00:00
Mozhe Atkinson             2800 2005-10-30 00:00:00
Stephen Stiles             3200 2005-10-26 00:00:00
John Seo                   2700 2006-02-12 00:00:00
Randall Matos              2600 2006-03-15 00:00:00
| FIRST_NAME | '' | LAST SALARY HIRE_DATE | 
|---|
Alexis Bull                4100 2005-02-20 00:00:00
Kelly Chung                3800 2005-06-14 00:00:00
Britney Everett            3900 2005-03-03 00:00:00
Steven Markle              2200 2008-03-08 00:00:00
Ki Gee                     2400 2007-12-12 00:00:00
Hazel Philtanker           2200 2008-02-06 00:00:00
Nandita Sarchand           4200 2004-01-27 00:00:00
Sarah Bell                 4000 2004-02-04 00:00:00
Alberto Errazuriz         12000 2005-03-10 00:00:00
Gerald Cambrault          11000 2007-10-15 00:00:00
Eleni Zlotkey             10500 2008-01-29 00:00:00
| FIRST_NAME | '' | LAST SALARY HIRE_DATE | 
|---|
Clara Vishney             10500 2005-11-11 00:00:00
Lisa Ozer                 11500 2005-03-11 00:00:00
Harrison Bloom            10000 2006-03-23 00:00:00
Tayler Fox                 9600 2006-01-24 00:00:00
Danielle Greene            9500 2007-03-19 00:00:00
Jack Livingston            8400 2006-04-23 00:00:00
Mattea Marvins             7200 2008-01-24 00:00:00
John Russell              14000 2004-10-01 00:00:00
Karen Partners            13500 2005-01-05 00:00:00
Ellen Abel                11000 2004-05-11 00:00:00
Peter Tucker              10000 2005-01-30 00:00:00
| FIRST_NAME | '' | LAST SALARY HIRE_DATE | 
|---|
David Bernstein            9500 2005-03-24 00:00:00
Peter Hall                 9000 2005-08-20 00:00:00
Alyssa Hutton              8800 2005-03-19 00:00:00
Jonathon Taylor            8600 2006-03-24 00:00:00
Christopher Olsen          8000 2006-03-30 00:00:00
Nanette Cambrault          7500 2006-12-09 00:00:00
William Smith              7400 2007-02-23 00:00:00
Elizabeth Bates            7300 2007-03-24 00:00:00
David Lee                  6800 2008-02-23 00:00:00
Sundar Ande                6400 2008-03-24 00:00:00
65 rows selected.
62.哪些员工跟Den(FIRST_NAME)、Raphaely(LAST_NAME)不在同一个部门(非关联子查询)。
SQL>  select  first_name || ' '||last_name from employees where DEPARTMENT_ID != (select DEPARTMENT_ID from employees where FIRST_NAME='Den' and LAST_NAME='Raphaely');
Ellen Abel
Sundar Ande
Mozhe Atkinson
David Austin
Hermann Baer
Amit Banda
Elizabeth Bates
Sarah Bell
David Bernstein
Laura Bissot
Harrison Bloom
Alexis Bull
Anthony Cabrio
Gerald Cambrault
Nanette Cambrault
John Chen
Kelly Chung
Curtis Davies
Lex De Haan
Julia Dellinger
Jennifer Dilly
Louise Doran
Bruce Ernst
Alberto Errazuriz
Britney Everett
Daniel Faviet
Pat Fay
Kevin Feeney
Jean Fleaur
Tayler Fox
Adam Fripp
Timothy Gates
Ki Gee
Girard Geoni
William Gietz
Douglas Grant
Nancy Greenberg
Danielle Greene
Peter Hall
Michael Hartstein
Shelley Higgins
Alexander Hunold
Alyssa Hutton
Charles Johnson
Vance Jones
Payam Kaufling
Janette King
Steven King
Neena Kochhar
Sundita Kumar
Renske Ladwig
James Landry
David Lee
Jack Livingston
Diana Lorentz
Jason Mallin
Steven Markle
James Marlow
Mattea Marvins
Randall Matos
Susan Mavris
Samuel McCain
Allan McEwen
Irene Mikkilineni
Kevin Mourgos
Julia Nayer
Donald OConnell
Christopher Olsen
TJ Olson
Lisa Ozer
Karen Partners
Valli Pataballa
Joshua Patel
Randall Perkins
Hazel Philtanker
Luis Popp
Trenna Rajs
Michael Rogers
John Russell
Nandita Sarchand
Ismael Sciarra
John Seo
Sarath Sewall
Lindsey Smith
William Smith
Stephen Stiles
Martha Sullivan
Patrick Sully
Jonathon Taylor
Winston Taylor
Peter Tucker
Oliver Tuvault
Jose Manuel Urman
Peter Vargas
Clara Vishney
Shanta Vollman
Alana Walsh
Matthew Weiss
Jennifer Whalen
Eleni Zlotkey
100 rows selected.
SQL> select  first_name || ' '||last_name from employees where DEPARTMENT_ID not in (select DEPARTMENT_ID from employees where FIRST_NAME='Den' and LAST_NAME='Raphaely');
Matthew Weiss
Adam Fripp
Payam Kaufling
Shanta Vollman
Kevin Mourgos
Julia Nayer
Irene Mikkilineni
James Landry
Steven Markle
Laura Bissot
Mozhe Atkinson
James Marlow
TJ Olson
Jason Mallin
Michael Rogers
Ki Gee
Hazel Philtanker
Renske Ladwig
Stephen Stiles
John Seo
Joshua Patel
Trenna Rajs
Curtis Davies
Randall Matos
Peter Vargas
Winston Taylor
Jean Fleaur
Martha Sullivan
Girard Geoni
Nandita Sarchand
Alexis Bull
Julia Dellinger
Anthony Cabrio
Kelly Chung
Jennifer Dilly
Timothy Gates
Randall Perkins
Sarah Bell
Britney Everett
Samuel McCain
Vance Jones
Alana Walsh
Kevin Feeney
Donald OConnell
Douglas Grant
Susan Mavris
Shelley Higgins
William Gietz
Steven King
Neena Kochhar
Lex De Haan
Hermann Baer
Jennifer Whalen
Michael Hartstein
Pat Fay
Alexander Hunold
Bruce Ernst
David Austin
Valli Pataballa
Diana Lorentz
Nancy Greenberg
Daniel Faviet
John Chen
Ismael Sciarra
Jose Manuel Urman
Luis Popp
John Russell
Karen Partners
Alberto Errazuriz
Gerald Cambrault
Eleni Zlotkey
Peter Tucker
David Bernstein
Peter Hall
Christopher Olsen
Nanette Cambrault
Oliver Tuvault
Janette King
Patrick Sully
Allan McEwen
Lindsey Smith
Louise Doran
Sarath Sewall
Clara Vishney
Danielle Greene
Mattea Marvins
David Lee
Sundar Ande
Amit Banda
Lisa Ozer
Harrison Bloom
Tayler Fox
William Smith
Elizabeth Bates
Sundita Kumar
Ellen Abel
Alyssa Hutton
Jonathon Taylor
Jack Livingston
Charles Johnson
100 rows selected.
63.哪些员工跟Den(FIRST_NAME)、Raphaely(LAST_NAME)不在同一个部门(关联子查询)。
SQL> select  first_name || ' '||last_name from employees emp1  where not exists (select 1 from employees emp2 where FIRST_NAME='Den' and LAST_NAME='Raphaely'and emp1.DEPARTMENT_ID =emp2.DEPARTMENT_ID );
Matthew Weiss
Adam Fripp
Payam Kaufling
Shanta Vollman
Kevin Mourgos
Julia Nayer
Irene Mikkilineni
James Landry
Steven Markle
Laura Bissot
Mozhe Atkinson
James Marlow
TJ Olson
Jason Mallin
Michael Rogers
Ki Gee
Hazel Philtanker
Renske Ladwig
Stephen Stiles
John Seo
Joshua Patel
Trenna Rajs
Curtis Davies
Randall Matos
Peter Vargas
Winston Taylor
Jean Fleaur
Martha Sullivan
Girard Geoni
Nandita Sarchand
Alexis Bull
Julia Dellinger
Anthony Cabrio
Kelly Chung
Jennifer Dilly
Timothy Gates
Randall Perkins
Sarah Bell
Britney Everett
Samuel McCain
Vance Jones
Alana Walsh
Kevin Feeney
Donald OConnell
Douglas Grant
Susan Mavris
Shelley Higgins
William Gietz
Steven King
Neena Kochhar
Lex De Haan
Hermann Baer
Jennifer Whalen
Kimberely Grant
Michael Hartstein
Pat Fay
Alexander Hunold
Bruce Ernst
David Austin
Valli Pataballa
Diana Lorentz
Nancy Greenberg
Daniel Faviet
John Chen
Ismael Sciarra
Jose Manuel Urman
Luis Popp
John Russell
Karen Partners
Alberto Errazuriz
Gerald Cambrault
Eleni Zlotkey
Peter Tucker
David Bernstein
Peter Hall
Christopher Olsen
Nanette Cambrault
Oliver Tuvault
Janette King
Patrick Sully
Allan McEwen
Lindsey Smith
Louise Doran
Sarath Sewall
Clara Vishney
Danielle Greene
Mattea Marvins
David Lee
Sundar Ande
Amit Banda
Lisa Ozer
Harrison Bloom
Tayler Fox
William Smith
Elizabeth Bates
Sundita Kumar
Ellen Abel
Alyssa Hutton
Jonathon Taylor
Jack Livingston
Charles Johnson
101 rows selected.
发现上面一题错误
SQL> select  first_name || ' '||last_name from employees where nvl(DEPARTMENT_ID,1) not in (select DEPARTMENT_ID from employees where FIRST_NAME='Den' and LAST_NAME='Raphaely');
Matthew Weiss
Adam Fripp
Payam Kaufling
Shanta Vollman
Kevin Mourgos
Julia Nayer
Irene Mikkilineni
James Landry
Steven Markle
Laura Bissot
Mozhe Atkinson
James Marlow
TJ Olson
Jason Mallin
Michael Rogers
Ki Gee
Hazel Philtanker
Renske Ladwig
Stephen Stiles
John Seo
Joshua Patel
Trenna Rajs
Curtis Davies
Randall Matos
Peter Vargas
Winston Taylor
Jean Fleaur
Martha Sullivan
Girard Geoni
Nandita Sarchand
Alexis Bull
Julia Dellinger
Anthony Cabrio
Kelly Chung
Jennifer Dilly
Timothy Gates
Randall Perkins
Sarah Bell
Britney Everett
Samuel McCain
Vance Jones
Alana Walsh
Kevin Feeney
Donald OConnell
Douglas Grant
Susan Mavris
Kimberely Grant
Shelley Higgins
William Gietz
Steven King
Neena Kochhar
Lex De Haan
Hermann Baer
Jennifer Whalen
Michael Hartstein
Pat Fay
Alexander Hunold
Bruce Ernst
David Austin
Valli Pataballa
Diana Lorentz
Nancy Greenberg
Daniel Faviet
John Chen
Ismael Sciarra
Jose Manuel Urman
Luis Popp
John Russell
Karen Partners
Alberto Errazuriz
Gerald Cambrault
Eleni Zlotkey
Peter Tucker
David Bernstein
Peter Hall
Christopher Olsen
Nanette Cambrault
Oliver Tuvault
Janette King
Patrick Sully
Allan McEwen
Lindsey Smith
Louise Doran
Sarath Sewall
Clara Vishney
Danielle Greene
Mattea Marvins
David Lee
Sundar Ande
Amit Banda
Lisa Ozer
Harrison Bloom
Tayler Fox
William Smith
Elizabeth Bates
Sundita Kumar
Ellen Abel
Alyssa Hutton
Jonathon Taylor
Jack Livingston
Charles Johnson
101 rows selected.
not in <>忽略null
64.Finance部门有哪些职位(非关联子查询)。
SQL> SELECT DISTINCT JOB_ID FROM EMPLOYEES where DEPARTMENT_ID = (select DEPARTMENT_ID from DEPARTMENTS where DEPARTMENT_NAME = 'Finance');
FI_ACCOUNT
FI_MGR
SQL> SELECT DISTINCT JOB_ID FROM EMPLOYEES where DEPARTMENT_ID in (select DEPARTMENT_ID from DEPARTMENTS where DEPARTMENT_NAME = 'Finance');
FI_ACCOUNT
FI_MGR
65.Finance部门有哪些职位(关联子查询)。
SQL> SELECT DISTINCT JOB_ID FROM EMPLOYEES a where exists (select DEPARTMENT_ID from DEPARTMENTS b where a.DEPARTMENT_ID=b.DEPARTMENT_ID and DEPARTMENT_NAME = 'Finance');
FI_ACCOUNT
FI_MGR
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。