Отчет пр 15
.docxФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
Кафедра безопасности информационных систем
ОТЧЁТ
по практической работе №15 на тему: «Создание запросов в SQL Developer»
по дисциплине «Управление данными»
Выполнил: студент группы ИСТ-114, Медведева С.Г
«__» ________ 2022 г. ___________/Медведева С.Г. /
Принял: Перевозник Ю.Я.
«__» ______ 2022 г. ___________/Ю.Я. Перевозник
Цель работы: научиться создавать запросы в Oracle SQL Developer – интегрированной среде разработки на языках SQL & PL/SQL
Задание 1:
1. Написать запрос, который бы вывел количество филиалов (результатом должна быть одна цифра).
SELECT COUNT(f.filialid) as count_filial
FROM filial f
2. Написать запрос, выводящий дату рождения самого молодого сотрудника (результатом должно быть одно значение, одна дата).
SELECT min (p.birthdate) as min_birthdate
FROM persons p
3. Написать запрос, подсчитывающий количество сотрудников, не имеющих автомобиля (результатом должна быть одна цифра).
SELECT count(p.personid) as persons_not_cars
FROM persons p
LEFT JOIN personcars pc
on p.personid = pc.personid
where pc.personid is NULL
Задание2:
1. Написать запрос, который бы вывел сотрудников и показал сколько у каждого сотрудника автомобилей. Если у сотрудника нет ни одного авто, он тоже должен быть в отчете.
SELECT p.name as "ФИО", count(pc.carname) as "Количество автомобилей"
FROM persons p
LEFT JOIN personcars pc
on p.personid = pc.personid
group by p.name
2. Доработать запрос из задачи 1, добавить в результирующую таблицу столбец PersonID. Результат должен быть вида:
SELECT p.personid, p.name as "ФИО", count(pc.carname) as "Количество автомобилей"
FROM persons p
LEFT JOIN personcars pc
on p.personid = pc.personid
group by p.name, p.personid
3. Вывести ФИО поваров и подсчитать сколько каждый повар готовит блюд. Результат требуется вида:
select p.name as "ФИО", count (c.cookid) as "Количество блюд"
from persons p
left join canteendishes c
on p.personid = c.cookid
where c.dishid is not null
group by p.name
4. Вывести категории блюд (таблица DishType), количество блюд в каждой категории (таблица блюда – CanteenDishes), а также минимальную и максимальную цены блюд в каждой категории.
select d.name as "Категория",
count (c.dishid) as "Количество блюд",
min(c.price) as "Минимальная цена",
max(c.price) as "Максимальная цена"
from dishtype d
left join canteendishes c
on d.dishtype = c.dishtype
group by d.name
5. Вывести список департаментов и количество автомобилистов (не автомобилей) в каждом департаменте. Если в департаменте нет ни одного автомобилиста, департамент отображать не нужно.
select d.departamentname as "Вавава",
count (DISTINCT p.personid)
from departament d
join persons p
on d.departamentid = p.departamentid
join personcars pc
on p.personid = pc.personid
GROUP by d.departamentname
6. Используя таблицу PersonPayments (начисления заработных плат), вывести начисления заработных плат всего по отделам за март 2019. Сколько на каждый отдел расходуется денежных средств на оплату труда. Результат отсортировать по сумме затрат по убыванию. Сначала отобразить отделы с наибольшими затратами на оплату труда.
select d.departamentname,
sum (pp.sum)
from departament d
join persons p
on d.departamentid = p.departamentid
join personpayments pp
on p.personid = pp.personid
where pp.period = TO_DATE('01.03.2019', 'dd.mm.yyyy')
GROUP BY d.departamentname
ВЫВОД
Научилась создавать запросы в Oracle SQL Developer – интегрированной среде разработки на языках SQL & PL/SQL.
Санкт-Петербург
2022