Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Отчет пр 15

.docx
Скачиваний:
9
Добавлен:
24.01.2023
Размер:
103.63 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»

(СПбГУТ)

Кафедра безопасности информационных систем

ОТЧЁТ

по практической работе №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

Соседние файлы в предмете Управление данными