
-
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.