 
        
        - 
select e.employee_id,e.last_name 
- 
from employees e 
- 
where (e.department_id) in (select m.department_id from employees m where m.last_name like lower('%u%'))   
- 
4.Создайте запрос для вывода фамилии, номера отдела и должности каждого служащего, идентификатор местоположения отдела которого равен 1700. 
- 
select distinct e.last_name,e.department_id,e.job_id from employees e,departments d where d.location_id = 1700 
- 
5.Получите список фамилий и окладов всех служащих, подчинённых Кингу. 
- 
select last_name,salary, from employees where manager_id = (select employee_id from employees where manager_id is null)   
- 
6.Получите номер отдела, фамилию и должность для каждого служащего, работающего в администрации (department_name = ‘Executive’).   
- 
select e.department_id,e.last_name,e.job_id from employees e,departments d where d.department_name like 'Executive' 
- 
7.Измените lab6_3.sql для вывода номеров, фамилий и окладов всех служащих, которые работают в одном отделе с любым служащим с буквой «u» в фамилии и оклады которых превышают средний. Сохраните новый запрос в файле lab6_7.sql. Выполните его. 
- 
select e.employee_id,e.last_name,salary 
- 
from employees e 
- 
where (e.department_id) in (select m.department_id from employees m where m.last_name like lower('%u%')) 
- 
group by e.employee_id,e.last_name,salary 
- 
having (select avg(salary) from employees)< salary   
- 
8.Покажите номер отдела с наивысшей средней заработной платой и наименьший оклад работающегов нём сотрудника.   
- 
select department_id,min(e.salary) from employees e group by department_id having (max(select avg(m.salary) from employees m )) > ( avg(e.salary)) //доделать 
- 
9.Выведите номера , наименования и местоположения отделов, в которых не работают торговые представители (job_id = ‘SA_REP’).   
- 
select distinct d.department_id,d.department_name,d.manager_id,d.location_id from departments d 
- 
where (d.department_id) in (select m.department_id from employees m where m.job_id not like 'SA_REP') 
- 
Лабораторная работа 8
- 
Создание запросов, в которых используются операторы SET. 
- 
Альтернативные методы соединения. 
- 
Используя оператор SET, выведите номера отделов (department_id), в которых нет служащих с идентификатором должности (job_id) ST_CLERK.  
- 
select department_id from employees e 
- 
where not exists (select job_id from employees where job_id=e.job_id and job_id = 'ST_CLERK') 
- 
Используя оператор SET, выведите идентификаторы и наименования стран, в которых не располагаются отделы компании.  
- 
select distinct COUNTRY_ID, COUNTRY_NAME FROM COUNTRIES WHERE COUNTRY_ID IN (SELECT COUNTRY_ID FROM COUNTRIES MINUS SELECT COUNTRY_ID FROM LOCATIONS WHERE LOCATION_ID IN (SELECT LOCATION_ID FROM DEPARTMENTS)) 
- 
Используя оператор SET, выведите список должностей отделов 10, 50 и 20 в таком же порядке отделов. Выведите столбцы job_id и department_id.  
- 
select job_id,department_id from 
- 
(select 1 as id,job_id,department_id from employees where department_id=10 
- 
union 
- 
select 2 as id,job_id,department_id from employees where department_id=50 
- 
union 
- 
select 3 as id,job_id,department_id from employees where department_id=20) 
- 
Выведите номер сотрудника и идентификатор его должности, если его текущая должность совпадает с той, которую он уже занимал, работая в компании.  
- 
select e.employee_id,e.job_id from job_history j,employees e where e.job_id=j.job_id and e.employee_id=j.employee_id 
- 
union 
- 
select j.employee_id,j.job_id from job_history j,employees e where e.job_id=j.job_id and e.employee_id=j.employee_id 
- 
Напишите составной запрос, который выводит следующее: 
- 
Номера и отделы всех сотрудников из таблицы EMPLOYEES, независимо от того, относятся ли они к какому-то отделу или нет; 
- 
Номера и наименования всех отделов из таблицы DEPARTMENTS, независимо от того, есть ли в них сотрудники или нет. 
- 
select employee_id,department_id,NULL,NULL from employees 
- 
union 
- 
select NULL as department_id,NULL as department_name,department_id,department_name from departments 
- 
Лабораторная работа 9
- 
Создание многостолбцовых подзапросов 
- 
Написание связанных подзапросов 
- 
Использование оператора EXIST 
- 
Использование скалярных подзапросов 
- 
Использование предложения WITH 
- 
Создайте запрос для вывода фамилии, номера отдела и оклада всех служащих, чей номер отдела и оклад совпадают с номером отдела и окладом любого служащего, зарабатывающего комиссионные.  
- 
select last_name,department_id,salary from employees e 
- 
where exists (select * from employees d where e.department_id=d.department_id and e.salary=d.salary and e.commission_pct is not null) 
- 
Выведите фамилию, название отдела и оклад всех служащих, чей оклад и комиссионные совпадают с окладом и комиссионными любого служащего, работающего в отделе, местоположение которого (Location_ID).  
- 
Создайте запрос для вывода фамилии, даты найма и оклада всех служащих, которые получают такой же оклад и такие же комиссионные, как Kochhar. Не выводите данные о сотруднике Kochhar.   
- 
select e.last_name,e.hire_date,e.salary from employees e where (e.hire_date,e.salary) in 
- 
(select h.hire_date,h.salary from employees h where exists 
- 
(select d.last_name from employees d where last_name = 'Kochhar' and h.salary=d.salary) and last_name <> 'Kochhar') 
- 
Выведите фамилию, должность и оклад всех служащих, оклад которых превышает оклад каждого клерка торгового менеджера (JOB_ID = ‘SA_MAN’). Отсортируйте результаты по убыванию окладов.  
- 
Выведите номера, фамилии и отделы служащих, живущих в городах, названия которых начинаются с буквы Т.  
- 
4)select last_name,job_id,salary from employees where salary >(select min(salary) from employees where job_id ='SA_MAN' )and job_id <> 'SA_MAN' 
- 
5) select employee_id,last_name,department_id from employees e where exists (select city from locations where city like 'T%') 
- 
Напишите запрос для нахождения всех сотрудников, которые зарабатывают больше среднего оклада по их отделу. Выведите фамилию, оклад, номер отдела и средний оклад по отделу. Отсортируйте результаты по средней зарплате. Используйте псевдонимы для выбираемых столбцов.   
- 
select e.last_name ename,e.salary ,e.department_id deptno,(select avg(f.salary) from employees f where f.department_id = e.department_id ) dept_avg from employees e 
- 
where (select avg(f.salary) from employees f where f.department_id = e.department_id ) < e.salary order by 4 
- 
Найдите всех сотрудников, не являющихся руководителями. Выполните это с помощью оператора NOT EXIST.  
- 
select e.last_name from employees e where not exists ( select m.last_name from employees m where m.manager_id = e.employee_id ) 
- 
Может ли это же быть сделано с помощью оператора NOT IN? нет 
- 
Выведите фамилии сотрудников, зарабатывающих меньше среднего оклада по их отделу.  
- 
select e.last_name from employees e where salary in(select salary from employees where salary < ( select avg(m.salary) from employees m where m.department_id = e.department_id )) 
- 
Выведите фамилии сотрудников, у которых есть коллеги по отделу, которые были приняты на работу позже, но имеют более высокий оклад.  
- 
select e.last_name from employees e where exists ( select m.last_name from employees m where m.hire_date >e.hire_date and m.salary > e.salary and m.department_id=e.department_id ) 
- 
Выведите номера, фамилии и наименования отделов всех сотрудников. Используйте скалярный подзапрос в команде SELECT для вывода наименований отделов.  
- 
select e.employee_id,e.last_name,(select d.department_name from departments d where d.department_id=e.department_id) department from employees e 
- 
Напишите запрос для вывода наименования отделов и фондов заработной платы отделов, размер которых больше 1/8 от общего фонда заработной платы всей компании. Используйте предложение WITH для создания запроса. Назовите запрос SUMMARY.  
