
Управление данными УД / Управление данными_ИСТ-11-12-15 / ИСТ-15 / 4-Основы SQL 2 / Кучейко А .С 4
.docxСанкт-Петербургский государственный университет телекоммуникаций им. проф. М. А. Бонч-Бруевича
Факультет «Информационные системы и технологии»
Кафедра «Безопасности информационных систем»
Дисциплина «Управление данными»
Отчет
по лабораторной работе №4
«SQL запросы»
Группа: ИСТ-15
Выполнил: Кучейко A.C.
Преподаватель: Сабинин О.Ю.
Липанова И.А.
Санкт-Петербург
2014
-
Напишите запрос для вывода самого высокого, самого низкого и среднего оклада по всем служащим, а также суммы всех окладов. Назовите столбцы Maximum, Minimum, Average и Sum. Округлите суммы до ближайшего целого значения.
select MAX (salary) miximum , MIN (salary) Minimem ,round (avg(salary)) Average , sum (salary)
from employees;
-
Напишите запрос для вывода должности и количества служащих, занимающих каждую должность.
select job_id as "должность" , count ( job_id) as " кол. служащих "
from employees
group by job_id
-
Получите количество служащих, имеющих подчинённых, без их перечисления. Назовите столбец Number of Managers.
select count (distinct(manager_id)) as "number of managers"
from employees
where manager_id is not null
-
Напишите запрос для вывода разности между самым высоким и самым низким окладами. Назовите столбец DIFFERENCE
SELECT max(salary) – min(salary) as Difference
FROM employees;
-
Напишите запрос для вывода номера каждого менеджера, имеющего подчинённых, и заработную плату самого низкооплачиваемого из его подчинённых. Исключите менеджеров для которых неизвестны их менеджеры. Исключите все группы, где минимальный оклад составляет менее $6000.
select min(s.salary) , e.employee_id
from employees e
join employees s on e.employee_id=s.manager_id
where e.manager_id is not null
group by e.employee_id
having min(s.salary) > 6000
-
Напишите запрос для вывода фамилии, должности, номера отдела и названия отдела всех служащих, работающих в городе Toronto.
select employees.last_name as фамилия ,employees.department_id as номер_отдела,
employees.job_id as должность,
departments.department_name as название_отдела
from employees
inner join departments
on employees.department_id=departments.department_id
where departments.location_id=(select location_id
from locations
where
locations.city='Toronto')
-
Выведите фамилии и зарплаты служащих вместе с фамилиями и зарплатами их начальников.
select
m.last_name as начальник , m.salary as зарплата_нач,
e.last_name as служащие , e.salary as зарплата_служ
from
employees e join employees m on e.manager_id=m.employee_id
-
Создайте запрос для вывода фамилий и дата найма всех служащих, нанятых после Davies.
select last_name as фамилия, hire_date as дата_найма
from employees
where hire_date > (select hire_date
from employees
where last_name = 'Davies')
-
По всем служащим, нанятым раньше своих менеджеров, выведите фамилии и даты найма самих служащих, а также фамилии и даты найма их менеджеров. Назовите столбцы Employee, Emp Hired, Manager и Manager Hired.
select e.last_name as employee, e.hire_date as emp_hired,
m.last_name as manager , m.hire_date as manager_hired
from employees e join employees m on e.manager_id = m.employee_id
and e.hire_date < m.hire_date
-
Выведите номера, наименования и местоположение всех отделов, а также количество работающих в них сотрудников. Обеспечьте вывод отделов, в которых нет сотрудников.
select e.department_id as " id отдела",
d.department_name as "название отдела",
d.location_id as "местоп отдела",
count(e.employee_id)
from employees e join departments d
on (e.department_id(+)=d.department_id)
group
by e.department_id, d.department_name, d.location_id;
-
Напишите запрос для вывода фамилий, названия отдела и города, в котором он находится, для всех служащих, зарабатывающих комиссионные.
select employees.last_name as фамилия , department_name as назв_отдела ,
locations.city as город
from employees
join departments on employees.department_id = departments.department_id
join locations on locations.location_id = departments.location_id
where
employees.commission_pct is not null
-
Создайте запрос для вывода фамилии и даты найма каждого служащего, работающего в одном отделе с Zlotkey. Исключите Zlotkey из выходных данных.
Zlotkey. Исключите Zlotkey из выходных данных.
SELECT last_name as "Фамилия", hire_date as "дата найма"
FROM employees
WHERE department_id = (select department_id from employees where last_name = 'Zlotkey') AND not last_name = 'Zlotkey'
-
Создайте запрос для вывода номеров и фамилий всех служащих, оклад которых выше среднего. Отсортируйте данные в порядке увеличения окладов.
SELECT last_name, employee_id
FROM employees
WHERE salary > (select avg(salary) from employees)
ORDER BY salary;
-
Получите список фамилий и окладов всех служащих, подчинённых Кингу.
select e.last_name as "Фамилия служ", e.salary as "оклад служ"
from employees e , employees m
where e.manager_id = m.employee_id and m.last_name = 'King';
-
Покажите номер отдела с наивысшей средней заработной платой и наименьший оклад работающего в нём сотрудника.
select department_id as "номер отдела" ,
min (salary) as "мин зарплата "
from employees e
group by e.department_id
having avg (salary ) = (select max (avg(salary ))
from employees
group by department_id );
-
Выведите номера, наименования и местоположения отделов, в которых не работают торговые представители (job_id = ‘SA_REP’).
select distinct e.department_id as "номера отделов" ,
d.department_name as "наимен отделов" ,
l.street_address, l.city as "местоположение "
from employees e , departments d , locations l
where e.job_id != 'SA_REP' and e.department_id = d.department_id and
d.location_id = l.location_id ;
-
Выведите идентификаторы и наименования стран, в которых не располагаются отделы компании.
select country_id as "идентификатор" , country_name as "наименов стран"
from countries
where country_id not in (select distinct locations. country_id as country
from locations
join departments
on locations.location_id = departments.location_id ) ;