
Управление данными УД / Управление данными_ИСТ-11-12-15 / ИСТ-15 / 4-Основы SQL 2 / Квочин В.Ю.4
.docxСАНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ТЕЛЕКОМУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА
Факультет Информационных систем и технологий
Отчет
К лабораторной работе №4
Выполнил: Квочин В.Ю.
Группа: ИСТ-15
Санкт-Петербург
2014
Выполнение работы:
-
Напишите запрос для вывода самого высокого, самого низкого и среднего оклада по всем служащим, а также суммы всех окладов. Назовите столбцы Maximum, Minimum, Average и Sum. Округлите суммы до ближайшего целого значения.
Select Max(Salary) as Maximum, Min(Salary) as Minimum, Round(Avg(Salary)) as Average, Sum(Salary) as Sum
From Employees;
-
Напишите запрос для вывода должности и количества служащих, занимающих каждую должность.
Select Count(Employees.Job_Id) as Кол_Служ, Job_Title as Должность
From Jobs Inner Join Employees
On Jobs.Job_Id=Employees.Job_Id
Group by Job_Title;
-
Получите количество служащих, имеющих подчинённых, без их перечисления. Назовите столбец Number of Managers.
Select Count(Distinct(Manager_Id)) as “Number of Manager”
From Employees;
-
Напишите запрос для вывода разности между самым высоким и самым низким окладами. Назовите столбец DIFFERENCE
Select Max(Salary)-Min(Salary) as Difference
From Employees;
-
Напишите запрос для вывода номера каждого менеджера, имеющего подчинённых, и заработную плату самого низкооплачиваемого из его подчинённых. Исключите менеджеров для которых неизвестны их менеджеры. Исключите все группы, где минимальный оклад составляет менее $6000.
Select Manager_Id, Min(Salary)
From Employees
Where Manager_Id is Not Null
Group by Manager_Id
Having Min(Salary)>=6000;
-
Напишите запрос для вывода фамилии, должности, номера отдела и названия отдела всех служащих, работающих в городе Toronto.
Select Last_Name, Job_Id, Employees.Department_Id, Department_Name
From Employees Inner Join Departments
On Employees.Department_Id=Departments.Department_Id
Inner Join Locations
On Departments.Location_Id=Locations.Location_Id
Where City=’Toronto’;
-
Выведите фамилии и зарплаты служащих вместе с фамилиями и зарплатами их начальников.
Select Employee.Last_Name as Служащий, Employee.Salary as Зарплата
Manager.Last_Name as Начальник, Manager.Salary as Зарплата
From Employees Employee Inner Join Employees Manager
On Manager.Employees_Id=Employee.Manager_Id;
-
Создайте запрос для вывода фамилий и дат найма всех служащих, нанятых после Davies.
Select Employee.Last_Name, Employee.Hire_Date
From Employees Employee Inner Join Employees Davies
ON Davies.Last_Name=’Davies’
Where Davies.Hire_Date<Employee.Hire_Date;
-
По всем служащим, нанятым раньше своих менеджеров, выведите фамилии и даты найма самих служащих, а также фамилии и даты найма их менеджеров. Назовите столбцы Employee, Emp Hired, Manager и Manager Hired.
Select Employee.Last_Name as Employee, Employee.Hire_Date as Emp_Hired,
Manager.Last_Name as Manager, Manager.Hire_Date as Manager_Hired
From Employees Employee Inner Join Employees Manager
On Employee.Manager_Id=Manager.Employee_Id
Where Employee.Hire_Date<Manager.Hire_Date;
-
Выведите номера, наименования и местоположение всех отделов, а также количество работающих в них сотрудников. Обеспечьте вывод отделов, в которых нет сотрудников.
Select Employee.Department_Id, Department.Department_Name, Department.Location_Id, Count(Employee.Employee_Id)
From Employees Employee Right Outer Join Departments Department
On Employee.Department_Id=Department.Department_Id
Group by Employee.Department_Id, Department.Department_Name, Department.Location_Id;
-
Напишите запрос для вывода фамилий, названия отдела и города, в котором он находится, для всех служащих, зарабатывающих комиссионные.
Select Last_Name, Department_Name, City
From Employees Inner Join Departments
On Employees.Department_Id=Departments.Department_Id
Inner Join Locations
On Locations.Location_Id=Departments.Location_Id
Where 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 Last_Name !='Zlotkey';
-
Создайте запрос для вывода номеров и фамилий всех служащих, оклад которых выше среднего. Отсортируйте данные в порядке увеличения окладов.
Select Employee_Id, Last_name
From Employees
Where Salary>(Select Avg(Salary)
From Employees)
Order by Salary Asc;
-
Получите список фамилий и окладов всех служащих, подчинённых Кингу.
Select Employee.Last_Name as Служащий, Employee.Salary as Зарплата,
Manager.Last_Name as Менеджер
From Employees Employee Inner Join Employees Manager
On Manager.Employee_Id=Employee.Manager_Id
Where Manager.Last_Name='King';
-
Покажите номер отдела с наивысшей средней заработной платой и наименьший оклад работающего в нём сотрудника.
Select Department_Id, Min(Salary)
From Employees
Group by Department_Id
Having Avg(Salary)=(Select Max(Avg(Salary))
From Employees
Group by Department_Id);
-
Выведите номера, наименования и местоположения отделов, в которых не работают торговые представители (job_id = ‘SA_REP’).
Select Distinct Employee.Department_Id, Department.Department_Name,
Location.Location_Id
From Employees Employee Inner Join Departments Department
On Employee.Department_Id=Department.Department_Id
Inner Join Locations Location
On Department.Location_Id=Location.Location_Id
Where Job_Id !='SA_REP';
-
Выведите идентификаторы и наименования стран, в которых не располагаются отделы компании.
Select Country_Id, Country_Name
From Countries
Where Country_Id not in (Select Country_Id
From Locations Inner Join Departments
On Locations.Location_Id=Departments.Department_Id);
Вывод:
В ходе лабораторной работы, нами были изучены и применены запросы SQL в СУБД Oracle.