Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
blablabla.docx
Скачиваний:
2
Добавлен:
25.04.2019
Размер:
326.2 Кб
Скачать
  1. select e.employee_id,e.last_name

  2. from employees e

  3. where (e.department_id) in (select m.department_id from employees m where m.last_name like lower('%u%'))

  4. 4.Создайте запрос для вывода фамилии, номера отдела и должности каждого служащего, идентификатор местоположения отдела которого равен 1700.

  5. select distinct e.last_name,e.department_id,e.job_id from employees e,departments d where d.location_id = 1700

  6. 5.Получите список фамилий и окладов всех служащих, подчинённых Кингу.

  7. select last_name,salary, from employees where manager_id = (select employee_id from employees where manager_id is null)

  8. 6 .Получите номер отдела, фамилию и должность для каждого служащего, работающего в администрации (department_name = ‘Executive’).

  9. select e.department_id,e.last_name,e.job_id from employees e,departments d where d.department_name like 'Executive'

  10. 7.Измените lab6_3.sql для вывода номеров, фамилий и окладов всех служащих, которые работают в одном отделе с любым служащим с буквой «u» в фамилии и оклады которых превышают средний. Сохраните новый запрос в файле lab6_7.sql. Выполните его.

  11. select e.employee_id,e.last_name,salary

  12. from employees e

  13. where (e.department_id) in (select m.department_id from employees m where m.last_name like lower('%u%'))

  14. group by e.employee_id,e.last_name,salary

  15. having (select avg(salary) from employees)< salary

  16. 8 .Покажите номер отдела с наивысшей средней заработной платой и наименьший оклад работающегов нём сотрудника.

  17. 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)) //доделать

  18. 9 .Выведите номера , наименования и местоположения отделов, в которых не работают торговые представители (job_id = ‘SA_REP’).

  19. select distinct d.department_id,d.department_name,d.manager_id,d.location_id from departments d

  20. where (d.department_id) in (select m.department_id from employees m where m.job_id not like 'SA_REP')

  21. Лабораторная работа 8

  • Создание запросов, в которых используются операторы SET.

  • Альтернативные методы соединения.

  1. Используя оператор SET, выведите номера отделов (department_id), в которых нет служащих с идентификатором должности (job_id) ST_CLERK.

  1. select department_id from employees e

  2. where not exists (select job_id from employees where job_id=e.job_id and job_id = 'ST_CLERK')

  1. Используя оператор SET, выведите идентификаторы и наименования стран, в которых не располагаются отделы компании.

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

  1. Используя оператор SET, выведите список должностей отделов 10, 50 и 20 в таком же порядке отделов. Выведите столбцы job_id и department_id.

  1. select job_id,department_id from

  2. (select 1 as id,job_id,department_id from employees where department_id=10

  3. union

  4. select 2 as id,job_id,department_id from employees where department_id=50

  5. union

  6. select 3 as id,job_id,department_id from employees where department_id=20)

  1. Выведите номер сотрудника и идентификатор его должности, если его текущая должность совпадает с той, которую он уже занимал, работая в компании.

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

  2. union

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

  1. Напишите составной запрос, который выводит следующее:

    • Номера и отделы всех сотрудников из таблицы EMPLOYEES, независимо от того, относятся ли они к какому-то отделу или нет;

    • Номера и наименования всех отделов из таблицы DEPARTMENTS, независимо от того, есть ли в них сотрудники или нет.

  1. select employee_id,department_id,NULL,NULL from employees

  2. union

  3. select NULL as department_id,NULL as department_name,department_id,department_name from departments

  4. Лабораторная работа 9

  • Создание многостолбцовых подзапросов

  • Написание связанных подзапросов

  • Использование оператора EXIST

  • Использование скалярных подзапросов

  • Использование предложения WITH

  1. Создайте запрос для вывода фамилии, номера отдела и оклада всех служащих, чей номер отдела и оклад совпадают с номером отдела и окладом любого служащего, зарабатывающего комиссионные.

  1. select last_name,department_id,salary from employees e

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

  1. Выведите фамилию, название отдела и оклад всех служащих, чей оклад и комиссионные совпадают с окладом и комиссионными любого служащего, работающего в отделе, местоположение которого (Location_ID).

  1. select last_name,department_name,salary

  2. from employees e,departments d where (salary ,commission_pct) in (select e.salary, e.commission_pct from departments d,employees er where e.department_id = d.department_id and location_id = 2500)

  1. С оздайте запрос для вывода фамилии, даты найма и оклада всех служащих, которые получают такой же оклад и такие же комиссионные, как Kochhar. Не выводите данные о сотруднике Kochhar.

  1. select e.last_name,e.hire_date,e.salary from employees e where (e.hire_date,e.salary) in

  2. (select h.hire_date,h.salary from employees h where exists

  3. (select d.last_name from employees d where last_name = 'Kochhar' and h.salary=d.salary) and last_name <> 'Kochhar')

  1. Выведите фамилию, должность и оклад всех служащих, оклад которых превышает оклад каждого клерка торгового менеджера (JOB_ID = ‘SA_MAN’). Отсортируйте результаты по убыванию окладов.

  2. Выведите номера, фамилии и отделы служащих, живущих в городах, названия которых начинаются с буквы Т.

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

  2. 5) select employee_id,last_name,department_id from employees e where exists (select department_id from departments where location_id in(select location_id from locations where city like 'T%'))

  1. Н апишите запрос для нахождения всех сотрудников, которые зарабатывают больше среднего оклада по их отделу. Выведите фамилию, оклад, номер отдела и средний оклад по отделу. Отсортируйте результаты по средней зарплате. Используйте псевдонимы для выбираемых столбцов.

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

  2. where (select avg(f.salary) from employees f where f.department_id = e.department_id ) < e.salary order by 4

  1. Найдите всех сотрудников, не являющихся руководителями. Выполните это с помощью оператора NOT EXIST.

  1. select e.last_name from employees e where not exists ( select m.last_name from employees m where m.manager_id = e.employee_id )

  1. Может ли это же быть сделано с помощью оператора NOT IN? нет

  2. Выведите фамилии сотрудников, зарабатывающих меньше среднего оклада по их отделу.

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

  1. Выведите фамилии сотрудников, у которых есть коллеги по отделу, которые были приняты на работу позже, но имеют более высокий оклад.

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

  1. Выведите номера, фамилии и наименования отделов всех сотрудников. Используйте скалярный подзапрос в команде SELECT для вывода наименований отделов.

  1. 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. Напишите запрос для вывода наименования отделов и фондов заработной платы отделов, размер которых больше 1/8 от общего фонда заработной платы всей компании. Используйте предложение WITH для создания запроса. Назовите запрос SUMMARY. WITH summary AS (

  1. SELECT department_id,sum(salary) as summaryq

  2. FROM employees e

  3. group by department_id

  4. having sum(salary)>(select sum(salary) from employees)/8)

  5. SELECT department_name,summaryq from summary,departments d

  6. Where summary.department_id=d.department_id

  7. Лабораторная работа 10

  • Отличие иерархических запросов от неиерархических

  • Обход дерева

  • Получение отчёта с отступом с помощью псевдостолбца LEVEL

  • Отсечение структур дерева

  • Сортировка выходных данных

  1. Напишите отчёт, в котором отражена структура отдела, которым руководит Mourgos. Выведите фамилии, оклады и номер отдела сотрудников.

  1. select last_name,salary,department_id from employees

  2. start with last_name = 'Mourgos'

  3. connect by prior employee_id=manager_id

  1. Создайте отчёт, который показывает иерархию менеджеров, которым подчиняется сотрудник Lorentz. Выведите сначала менеджера, перед которым непосредственно отчитывается Lorentz.

  1. select last_name from employees where last_name <> 'Lorentz'

  2. start with last_name = 'Lorentz'

  3. connect by prior manager_id=employee_id

  1. Создайте отчёт с отступом, в котором отражается иерархия управления, начиная с сотрудника по фамилии Kochhar. Выведите фамилии, номера менеджеров и номера отделов сотрудников. Назовите столбцы как показано в примере выходных результатов.

  1. select rpad('_',(level-1)*2,'_')||last_name name,manager_id mgr,department_id deptno from employees

  2. start with last_name = 'Kochhar'

  3. connect by prior employee_id=manager_id

  4. order by level

  1. Создайте отчёт, отражающий иерархию управления компанией. Начните с сотрудника самого высокого уровня и исключите из выходных данных всех служащих с идентификатором должности IT_PROG, а также сотрудника De Haan и всех, кто перед ним отчитывается.

  1. select last_name name,employee_id ,manager_id from employees

  2. start with manager_id is null

  3. connect by prior employee_id=manager_id

  4. order by level

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]