Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
21
Добавлен:
05.06.2015
Размер:
385 Кб
Скачать

20 Smith 800

30 James 950

10 Miller 1300

Q3_4

Список сотрудников отдела 30, получающих оклад больше минимального в отделе 20

SQL> select ename,sal,job,DEPTNO dept

from EMP

where DEPTNO=30 and

sal > any(select distinct sal from EMP

where DEPTNO=20)

order by sal,ename;

ENAME SAL JOB DEPTNO

---------- --------- --------- ---------

JAMES 950 CLERK 30

MARTIN 1250 SALESMAN 30

WARD 1250 SALESMAN 30

TURNER 1500 SALESMAN 30

ALLEN 1600 SALESMAN 30

BLAKE 2850 MANAGER 30

6 Rows selected.

Q3_5

Список сотрудников , получающих оклад больше любого, работающего в отделе 30

SQL> select ename,sal,job,DEPTNO dept from EMP

where sal > all(select distinct sal

from EMP where DEPTNO=30)

order by sal,ename;

ENAME SAL JOB DEPTNO

---------- --------- --------- ---------

JONES 2975 MANAGER 20

FORD 3000 ANALYST 20

SCOTT 3000 ANALYST 20

KING 5000 PRESIDENT 10

Q3_6

Отделы, где число сотрудников больше 3 и средний оклад больше среднего оклада отдела 30

SQL> select DEPTNO dept,avg(sal) from EMP

group by DEPTNO

having count(EMPNO) > 3

and avg(sal) > (select avg(sal) from EMP

where DEPTNO = 30);

DEPTNO AVG(SAL)

--------- ---------

20 2175

Q3_7

Год когда в компанию было зачислено наибольшее количество служащих

SQL> select to_char(hiredate,'YYYY') year,count(EMPNO) num

from EMP

group by to_char(hiredate,'YYYY')

having count(EMPNO) = (select max(count(EMPNO))

from EMP

group by to_char(hiredate,'YYYY'));

YEAR NUM

---- ---------

1981 10

3.2 Коррелированные подзапросы

Q3_8

Список сотрудников, получающих зарплату больше средней по отделу, где работают

SQL> select EMPNO,ename name,sal,DEPTNO

from EMP x

where sal > (select avg(sal) from EMP

where DEPTNO = x.DEPTNO)

order by DEPTNO,sal desc;

EMPNO NAME SAL DEPTNO

--------- ---------- --------- ----------

7839 KING 5000 10

7902 FORD 3000 20

7788 SCOTT 3000 20

7566 JONES 2975 20

7698 BLAKE 2850 30

7499 ALLEN 1600 30