
Управление данными УД / Управление данными_ИСТ-11-12-15 / ИСТ-15 / 4-Основы SQL 2 / Сущенко_Лаба4
.docx
Санкт-Петербургский Государственный Университет Телекоммуникаций
имени проф. М.А. Бонч-Бруевича
Факультет: Информационных систем и технологий (ИСиТ)
Кафедра: Безопасность информационных систем (БИС)
Отчет
К лабораторной работе №4
ОСНОВЫ ЯЗЫКА SQL-2
По дисциплине: Управление данными
Выполнил: Сущенко В.А.
Группа: ИСТ-15
Преподаватель: Сабинин О.Ю.
Санкт-Петербург
2014
-
Напишите запрос для вывода самого высокого, самого низкого и среднего оклада по всем служащим, а также суммы всех окладов. Назовите столбцы Maximum, Minimum, Average и Sum. Округлите суммы до ближайшего целого значения.
-
Напишите запрос для вывода должности и количества служащих, занимающих каждую должность.
-
Получите количество служащих, имеющих подчинённых, без их перечисления. Назовите столбец Number of Managers.
-
Напишите запрос для вывода разности между самым высоким и самым низким окладами. Назовите столбец DIFFERENCE
-
Напишите запрос для, и заработную плату самого низкооплачиваемого из его подчинённых. Исключите менеджеров для которых неизвестны их менеджеры. Исключите все группы, где минимальный оклад составляет менее $6000.
-
Напишите запрос для вывода фамилии, должности, номера отдела и названия отдела всех служащих, работающих в городе Toronto.
select last_name, job_id, employees.department_id, department_name, locations.city from employees
inner join departments
on departments.department_id=employees.department_id
inner join locations on locations.location_id = departments.location_id
where departments.location_id=(select location_id from locations where city='Toronto');
-
Выведите фамилии и зарплаты служащих вместе с фамилиями и зарплатами их начальников.
SELECT empl.last_name as Подчиненный, empl.salary as Зарплата,
man.last_name as Начальник, man.salary as Зарплата
FROM employees empl join employees man on man.employee_id=empl.manager_id;
-
Создайте запрос для вывода фамилий и дат найма всех служащих, нанятых после Davies.
select last_name, hire_date from employees
where hire_date > (select hire_date from employees where last_name = 'Davies');
-
По всем служащим, нанятым раньше своих менеджеров, выведите фамилии и даты найма самих служащих, а также фамилии и даты найма их менеджеров. Назовите столбцы Employee, Emp Hired, Manager и Manager Hired.
select empl.last_name as Employee, empl.hire_date as "Emp Hired",
man.last_name as Manager, man.hire_date as "Manager Hired"
from employees empl join employees man on
empl.manager_id=man.employee_id and
empl.hire_date<man.hire_date;
-
Выведите номера, наименования и местоположение всех отделов, а также количество работающих в них сотрудников. Обеспечьте вывод отделов, в которых нет сотрудников.
select empl.department_id, dep.department_name, dep.location_id,
count (empl.employee_id)
from employees empl left join departments dep
on (empl.department_id=dep.department_id)
group by empl.department_id, dep.department_name, dep.location_id;
-
Напишите запрос для вывода фамилий, названия отдела и города, в котором он находится, для всех служащих, зарабатывающих комиссионные.
select employees.last_name, departments.department_name, locations.city 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 из выходных данных.
select last_name, hire_date from employees
where department_id = (select department_id
from employees where last_name = 'Zlotkey')
and not last_name = 'Zlotkey';
-
Создайте запрос для вывода номеров и фамилий всех служащих, оклад которых выше среднего. Отсортируйте данные в порядке увеличения окладов.
select employee_id, last_name from employees
where salary > (select avg(salary) from employees)
order by salary;
-
Получите список фамилий и окладов всех служащих, подчинённых Кингу.
select empl.last_name, empl.salary from employees empl, employees king
where empl.manager_id = king.employee_id and king.last_name = 'King';
-
Покажите номер отдела с наивысшей средней заработной платой и наименьший оклад работающего в нём сотрудника.
select department_id as "Макс ЗП", min(salary) as "Мин оклад"
from employees
where salary=(select max(avg(salary)) from employees group by salary)
group by department_id;
-
Выведите номера, наименования и местоположения отделов, в которых не работают торговые представители (job_id = ‘SA_REP’).
select department_name, employees.department_id, location_id
from departments inner join employees
on departments.department_id=employees.department_id
where job_id not in 'SA_REP';
-
Выведите идентификаторы и наименования стран, в которых не располагаются отделы компании.
select distinct loc.country_id, cnt.country_name
from locations loc, countries cnt
where loc.location_id not in (select location_id from departments)
and loc.country_id = cnt.country_id;
-
Напишите запрос для вывода должности и количества служащих, занимающих каждую должность.
select job_title, count(last_name)
from jobs left outer join employees
on employees.job_id=jobs.job_id
group by job_title;
10. Выведите номера, наименования и местоположение всех отделов, а также количество работающих в них сотрудников. Обеспечьте вывод отделов, в которых нет сотрудников.
select empl.department_id, dep.department_name, dep.location_id,
count(empl.employee_id)
from employees empl join departments dep
on (empl.department_id(+)=dep.department_id)
group by empl.department_id, dep.department_name, dep.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 ) ;