
Управление данными УД / Управление данными_ИСТ-11-12-15 / ИСТ-15 / 4-Основы SQL 2 / Григорьева А.Т
.docСанкт-Петербургский Государственный Университет Телекоммуникаций имени проф. М.А. Бонч-Бруевича
Факультет: Информационных систем и технологий (ИСиТ)
Кафедра: Безопасность информационных систем (БИС)
Отчет
К лабораторной работе №4
ОСНОВЫ ЯЗЫКА SQL-2
По дисциплине: Управление данными
Выполнила: Григорьева А.Т
Группа: ИСТ-15
Преподаватель: Сабинин О.Ю.
Санкт-Петербург
2014
-
Напишите запрос для вывода самого высокого, самого низкого и среднего оклада по всем служащим, а также суммы всех окладов. Назовите столбцы Maximum, Minimum, Average и Sum. Округлите суммы до ближайшего целого значения.
select round(max(salary)) as "Maximum", round(avg(salary)) as "Average", round(min(salary)) as "Minimum", round(sum(salary)) as "sum"
from employees;
-
Напишите запрос для вывода должности и количества служащих, занимающих каждую должность.
select job_title, count(last_name)
from jobs left outer join employees
on employees.job_id=jobs.job_id
group by job_title;
-
Получите количество служащих, имеющих подчинённых, без их перечисления. Назовите столбец Number of Managers.
select count(distinct(manager_id)) as "Nubre of Managers"
from employees
where manager_id is not null;
-
Напишите запрос для вывода разности между самым высоким и самым низким окладами. Назовите столбец DIFFERENCE
SELECT max(salary) - min(salary) as DIFFERENS
FROM employees;
-
Напишите запрос для вывода номера каждого менеджера, имеющего подчинённых, и заработную плату самого низкооплачиваемого из его подчинённых. Исключите менеджеров для которых неизвестны их менеджеры. Исключите все группы, где минимальный оклад составляет менее $6000.
SELECT e.employee_id, min(s.salary)
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, Employees.job_id, Employees.department_id, Departments.department_name
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 e.last_name as Подчиненный, e.salary as Зарплата, m.last_name as Начальник, m.salary as Зарплата
FROM employees e join employees m on e.manager_id=m.employee_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 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, d.department_name, D.Location_id,
count (E.Employee_id)
From Employees E left 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, 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 e.last_name, e.salary
from employees e, employees em
where e.manager_id = em.employee_id and em.last_name = 'King';
-
Покажите номер отдела с наивысшей средней заработной платой и наименьший оклад работающего в нём сотрудника.
select department_id, min(salary)
from employees
where salary=(select max(avg(salary)) from employees group by salary)
group by department_id;
-
Выведите номера, наименования и местоположения отделов, в которых не работают торговые представители (job_id = ‘SA_REP’).
select employees.department_id, department_name, location_id
from departments inner join employees
on employees.department_id=departments.department_id
where job_id not in 'SA_REP';
-
Выведите идентификаторы и наименования стран, в которых не располагаются отделы компании.
Select distinct l.country_id, cn.country_name from locations l, countries cn
where l.location_id not in (select location_id from departments) and l.country_id = cn.country_id;