o Создание подзапросов для выборки данных по неизвестным критериям
o Использование подзапросов для выявления значений, существующих в одном наборе данных и отсутствующих в другом
Создайте запрос для вывода фамилии и даты найма каждого служащего, работающего в одном отделе с Zlotkey. Исключите Zlotkey из выходных данных.
select emp.last_name, emp.hire_date from employees emp where emp.department_id in (select department_id from employees where last_name='Zlotkey') and emp.last_name!='Zlotkey';
LAST_NAME
HIRE_DATE
Russell
01.10.04
Partners
05.01.05
Errazuriz
10.03.05
Cambrault
15.10.07
Tucker
30.01.05
Bernstein
24.03.05
Hall
20.08.05
Olsen
30.03.06
Cambrault
09.12.06
Tuvault
23.11.07
King
30.01.04
Sully
04.03.04
McEwen
01.08.04
Smith
10.03.05
Doran
15.12.05
Sewall
03.11.06
Vishney
11.11.05
Greene
19.03.07
Marvins
24.01.08
Lee
23.02.08
Ande
24.03.08
Banda
21.04.08
Ozer
11.03.05
Bloom
23.03.06
Fox
24.01.06
Smith
23.02.07
Bates
24.03.07
Kumar
21.04.08
Abel
11.05.04
Hutton
19.03.05
Taylor
24.03.06
Livingston
23.04.06
Johnson
04.01.08
Создайте запрос для вывода номеров и фамилий всех служащих, оклад которых выше среднего. Отсортируйте данные в порядке увеличения окладов.
select emp.employee_id,emp.last_name from employees emp where emp.salary > (select avg(salary) from employees) order by salary;
EMPLOYEE_ID
LAST_NAME
Mavris
Vollman
Lee
Popp
Tuvault
Grant
Sewall
Marvins
Bates
Smith
Cambrault
Doran
Sciarra
Urman
Kaufling
Weiss
Smith
Olsen
Chen
Fripp
Gietz
Livingston
Taylor
Hutton
Hunold
McEwen
Faviet
Hall
Sully
Greene
51 rows selected
Создайте запрос для вывода номеров и фамилий всех служащих, работающих в одном отделе с любым служащим, фамилия которого содержит букву «u». Сохраните свой запрос в тестовом файле lab6_3.sql. Выполните запрос.
select emp.employee_id,emp.last_name from employees emp where emp.department_id in (select department_id from employees where lower(employees.last_name) like '%u%');
EMPLOYEE_ID
LAST_NAME
Lorentz
Pataballa
Austin
Ernst
Hunold
Feeney
Walsh
Jones
McCain
Everett
Bell
Perkins
Gates
Dilly
Chung
Cabrio
Dellinger
Bull
Создайте запрос для вывода фамилии, номера отдела и должности каждого служащего, идентификатор местоположения отдела которого равен 1700.
select emp.last_name, emp.department_id, emp.job_id from employees emp where emp.department_id in
(select departments.department_id from departments where location_id=1700);
LAST_NAME
DEPARTMENT_ID
JOB_ID
Whalen
AD_ASST
Raphaely
PU_MAN
Colmenares
PU_CLERK
Khoo
PU_CLERK
Baida
PU_CLERK
Tobias
PU_CLERK
Himuro
PU_CLERK
Kochhar
AD_VP
King
AD_PRES
De Haan
AD_VP
Chen
FI_ACCOUNT
Greenberg
FI_MGR
Sciarra
FI_ACCOUNT
Urman
FI_ACCOUNT
Popp
FI_ACCOUNT
Faviet
FI_ACCOUNT
Gietz
AC_ACCOUNT
Higgins
AC_MGR
Получите список фамилий и окладов всех служащих, подчинённых Кингу.
select emp.last_name, emp.salary from employees emp where emp.manager_id in
(select employee_id from employees where last_name ='King');
LAST_NAME
SALARY
Hartstein
Kochhar
De Haan
Raphaely
Weiss
Fripp
Kaufling
Vollman
Mourgos
Russell
Partners
Errazuriz
Cambrault
Zlotkey
Получите номер отдела, фамилию и должность для каждого служащего, работающего в администрации (department_name = ‘Executive’).
select emp.department_id, emp.last_name, emp.job_id from employees emp where emp.department_id in
(select department_id from departments where department_name='Executive');
DEPARTMENT_ID
LAST_NAME
JOB_ID
King
AD_PRES
Kochhar
AD_VP
De Haan
AD_VP
Измените lab6_3.sql для вывода номеров, фамилий и окладов всех служащих, которые работают в одном отделе с любым служащим с буквой «u» в фамилии и оклады которых превышают средний. Сохраните новый запрос в файле lab6_7.sql. Выполните его.
select emp.employee_id,emp.last_name, emp.salary from employees emp where emp.department_id in
(select department_id from employees where lower(employees.last_name) like '%u%') and salary > (select avg(salary) from employees);
EMPLOYEE_ID
LAST_NAME
SALARY
Hunold
Vollman
Kaufling
Fripp
Weiss
Livingston
Taylor
Hutton
Abel
Bates
Smith
Fox
Bloom
Ozer
Lee
Marvins
Greene
Vishney
Sewall
Doran
Smith
McEwen
Sully
King
36 rows selected
Покажите номер отдела с наивысшей средней заработной платой и наименьший оклад работающего в select department_id, minsal from
(select department_id, avg(salary) avgsal, min(salary) minsal from employees group by department_id)
where avgsal=(select max(avg(salary)) from employees group by department_id);
DEPARTMENT_ID
MINSAL
Выведите номера , наименования и местоположения отделов, в которых не работают торговые представители (job_id = ‘SA_REP’).
select dep.department_id, dep.department_name, dep.location_id from departments dep
where dep.department_id not in (select nvl(department_id,0) from employees where job_id='SA_REP');