Научиться формировать и выполнять SQL-запросы различной степени сложности в СУБД Oracle, извлекать, фильтровать, агрегировать и трансформировать данные с учетом бизнес-логики, а также освоить основные конструкции языка SQL для работы с реляционными данными.
Отчет следует оформлять в формате docx-документа в соответствии с ГОСТ 7.32-2017. Он должен содержать:
Титульный лист;
Текст цели лабораторной работы, общего задания и задания по варианту;
Код запросов по каждому пункту задания;
Снимки экрана или фрагменты снимков с изображением результата выполнения запросов по каждому пункту задания;
ВАЖНО: убедиться, что масштаб изображенного на снимке хорошо виден при масштабе страницы 100%.
Вывод о проделанной работе.
Направлять вложением в приличное письмо на электронную почту преподавателя сразу по готовности.
1. Покажите все должности всех сотрудников. (простой запрос, таблица сотрудники).
2. Выведите всех сотрудников и номер отделения, в котором они работают. (простой запрос, таблица сотрудники).
3. Отыщите фамилии, номера отделений и должности сотрудников, которые работают в отделении 10. (where, таблица сотрудники).
4. Представьте из таблицы Сотрудников список месячной и годовой заработной платы всех клерков и менеджеров. (where, таблица сотрудники).
5. Представьте отсортированный по должности и заработной плате список персонала. Отсортируйте заработную плату по убыванию. (order by, таблица сотрудники).
6. Вычислите уровень гарантированной годовой премии как 11% месячной заработной платы. Округлите результат до целой величины. (арифметика, таблица сотрудники).
7. Покажите имена всех клиентов, которые имеются в таблице Клиенты. Выведите имена буквами верхнего регистра, буквами нижнего регистра и написав каждое имя с большой буквы. (работа с символьными строками).
8. Найдите среднюю заработную плату для каждого отдела. (group by, таблица сотрудники).
9. Покажите отделы с более, чем тремя сотрудниками. Вывести номер отдела и количество сотрудников. (group by, таблица сотрудники).
10. Найдите среднюю заработную плату сотрудников для каждого отдела. (функции группировки, таблица сотрудники).
11. Какая расходная сумма для предприятия, полученная суммированием заработных плат всех клерков и аналитиков? Выведите только сумму. (функции группировки, таблица сотрудники).
12. Следует показать общее количество различных профессий, которые имеются в отделениях 20 и 30. Выведите только найденное число. (функции группировки, таблица сотрудники).
13. Сформируйте список сотрудников, которые работают у Блейка, исключая Тюрнера (иерархический запрос, таблица сотрудники).
14. Составьте список номеров, имён и кредитов всех клиентов, которые имеют кредит от 3000$ и выше. (комбинированный запрос, таблица клиенты).
15. Покажите номера всех продуктов, их описание, действующий прайслист и минимальную цену. Используйте таблицы Продукты и Цены. (объединение таблиц).
16. Представьте список служащих, которые к 1993 году проработали на этой фирме более 12 месяцев.
17. Сформировать XML документ со следующей структурой:
<Заказы>
<Заказ номер=”ИД ЗАКАЗА” клиент=”ИМЯ ИЛИ НОМЕР КЛИЕНТА”>
<Позиция номер=”НОМЕР ПОЗИЦИИ ЗАКАЗА” количество=”КОЛИЧЕСТВО КУПЛЕННОГО ТОВАРА” цена=“ЦЕНА ТОВАРА”>НАИМЕНОВАНИЕ ИЛИ ИД ТОВАРА</Позиция>
…
…
</Заказ>
…
…
</Заказы>
18. В зависимости от возраста и пола вывести для каждого человека: для женщин – до 20 «барышня», до 30 – «барышня за 20», после 30 – «мадам»; для мужчин – до 20 «отрок», до 30 – «кавалер», до 40 – «кавалер за 30», после 40 – «мужчина в самом расцвете сил». (условное ветвление)
1. Выведите список всех отделов (простой запрос, таблица «Отделы»).
2. Отыщите фамилию, дату приёма на работу, заработную плату и надбавки для каждого сотрудника (простой запрос, таблица «Сотрудники»).
3. Отберите имя, заработную плату и персональный номер всех служащих, исключая того, который зарабатывает 5000$ (where, таблица «Сотрудники»).
4. Какие сотрудники работают либо клерками либо менеджерами в отделении 20 или 10? (where, таблица «Сотрудники»).
5. Представьте отсортированный список заказов по убыванию дат заказов. Выведите все данные, кроме комментария. Используйте при этом таблицу «Заказы». (order by).
6. Выведите список со всей информацией обо всех служащих, которые имеют нечётные персональные номера (арифметика, таблица «Сотрудники»).
7. Составьте список, в котором отражены имена клиентов и показано, в какой позиции первый раз встретилась буква "О", начиная с первой буквы имени. Используйте таблицу Клиенты (работа с символьными строками, таблица «Сотрудники»).
8. Как высока сумма окладов для каждой профессии. (group by, таблица «Сотрудники»).
9. Покажите, сколько человек выполняют отдельную работу и зарабатывают более 1500$ (group by, таблица «STUD.Сотрудники»).
10. Установите высшую и низшую заработную плату, выплачиваемую служащим каждого отдела. Рассчитайте разницу между ними (функции группировки, таблица «Сотрудники»).
11. Сформируйте список, который содержит количество человек по роду деятельности в соответствующем отделе (функции группировки, таблица «Сотрудники»).
12. Отыщите по таблице «STUD.Заказы» общее проданное количество каждого продукта. Отсортируйте результат по этому количеству в порядке убывания (функции группировки).
13. Создайте список всех сотрудников, в котором отсутствуют Кларк и Блейк. Также не следует выводить сотрудников, которые работают у Блейка (иерархический запрос, таблица «Сотрудники»).
14. Представьте список, в который отбирается дополнительная информация о теннисных продуктах из таблицы «STUD.Продукты» (комбинированный запрос).
15. Укажите имена всех служащих и всю информацию об отделах, в которых они работают (объединение таблиц, таблицы «Сотрудники» и «Отделы»).
16. Представьте список служащих, которые к 1993 году проработали на этой фирме более 12 месяцев.
17. Сформировать XML документ со следующей структурой:
<Отделы>
<Отдел номер=”НОМЕР ОТДЕЛА” название=”НАИМЕНОВАНИЕ”>
<Сотрудник номер=”НОМЕР СОТРУДНИКА” уровень_оплаты=”УРОВЕНЬ ЗАРПЛАТЫ” >ИМЯ СОТРУДНИКА</ Сотрудник >
…
…
</Отдел >
…
…
</Отделы >
18. Вывести первые 100 самых распространённых фамилий, игнорируя регистр, в котором они хранятся, а также начальные и конечные пробелы. Фамилии отсортировать в порядке убывания распространённости. Для каждой, в зависимости от распространённости, указать: больше 100 - "очень много"; от 30 до 100 - "много"; от 2 до 30 - "встречаются"; 1 - "единственный в своём роде". (условное ветвление)
1. Покажите все разнообразные профессии (простой запрос, таблица «Сотрудники»).
2. Измените предыдущий запрос так, чтобы вместо даты приёма на работу отображался номер отдела, в котором работает сотрудник (простой запрос, таблица «Сотрудники»).
3. Кто работает в отделении 10 или 30. Выдайте из таблицы «Сотрудники» имена сотрудников и соответствующие номера отделений (where).
4. Отыщите сотрудников, которые зарабатывают между 2500 и 3000$ (where, таблица «Сотрудники»).
5. Представьте отсортированный по убыванию номера продукта и по возрастанию минимальной цены список, в котором вся информация выводится из таблицы «Цены». (order by).
6. Покажите заработную плату служащих, округлённую с точностью до 1000. (арифметика, таблица «Сотрудники»).
7. Выведите из таблицы «STUD.Сотрудники» имена сотрудников, а также ещё один столбец, в котором каждая появляющаяся в имени "Л" была бы заменена на "Х". (работа с символьными строками).
8. Сколько сотрудников имеется по каждому роду деятельности (group by, таблица «Сотрудники»).
9. Найдите суммы всех заработных плат по отделам. При этом продавцов и президента не принимать во внимание. (group by, таблица «Сотрудники»).
10. Рассчитайте общую и среднюю заработную плату для каждой группы профессий по отделам (функции группировки, таблица «Сотрудники»).
11. Установите, в каких отделах более, чем два человека занимаются одним видом деятельности (функции группировки, таблица «Сотрудники»).
12. Найдите общую сумму по каждому заказу. Используйте таблицу «Позиции» (функции группировки).
13. Представьте список текущих кредитов свыше 4500$. Дополнительный столбец должен отражать увеличенный на 500$ кредит клиента (комбинированный запрос, таблица «Клиенты»).
14. Отыщите имена служащих и их место работы за исключением тех, которые работают в отделе продаж. (объединение таблиц, таблицы «Сотрудники» и «Клиенты»).
15. Покажите имена, уровень и заработок сотрудников (объединение таблиц, таблицы «Сотрудники» и «Уровни_зарплаты»).
16. Сформировать XML документ со следующей структурой:
<Продукты>
<Продукт номер=”НОМЕР ПРОДУКТА” название=”НАИМЕНОВАНИЕ”>
<Цена дата_начала=”ДАТА НАЧАЛА ДЕЙСТВИЯ ЦЕНЫ” дата_окончания=” ДАТА ОКОНЧАНИЯ ДЕЙСТВИЯ ЦЕНЫ ” >РОЗНИЧНАЯ ЦЕНА</ Цена >
…
…
</Продукт>
…
…
</Продукты>
17. Построить иерархию подчинённости всех подразделений ВУЗа, указывая уровень (корень = 1). Отформатировать вывод результата, добавляя слева для каждого элемента число пробелов, равное 3*уровень. Отсортировать каждую ветвь дерева по наименованию подразделения. (иерархический запрос)
18. Вывести первые 100 самых распространённых фамилий, игнорируя регистр, в котором они хранятся, а также начальные и конечные пробелы. Фамилии отсортировать в порядке убывания распространённости. Для каждой, в зависимости от распространённости, указать: больше 100 - "очень много"; от 30 до 100 - "много"; от 2 до 30 - "встречаются"; 1 - "единственный в своём роде". (условное ветвление)
1. Выведите все разнообразные фамилии сотрудников (Простой запрос, таблица «Сотрудники»).
2. Выведите всех сотрудников, номер отделения, в котором они работают и должности каждого сотрудника (Простой запрос, таблица «Сотрудники»).
3. Отыщите фамилии, номера отделений и должности сотрудников, которые работают в отделении 20 (where, таблица «Сотрудники»).
4. Представьте из таблицы Сотрудников список месячной и годовой заработной платы всех продавцов и аналитиков (where, таблица «Сотрудники»).
5. Представьте отсортированный по дате приема и должности список персонала. Отсортируйте дату приема по возрастанию (order by, таблица «Сотрудники»).
6. Вычислите уровень гарантированной месячной премии как 10% надбавки к заработной плате, у которых она есть. Округлите результат до целой величины (Арифметика, таблица «Сотрудники»).
7. Выведите все названия отделов, которые имеются в таблице «Отделы». Выведите названия отделов буквами верхнего регистра, буквами нижнего регистра и написав каждое название с большой буквы. (Работа с символьными строками).
8. Найдите среднюю заработную плату для каждого отдела. (group by, таблица «Сотрудники»).
9. Покажите отделы, где работают менее четырех человек. Вывести номер отдела и количество сотрудников (group by, таблица «Сотрудники»).
10. Найдите максимальную заработную плату, учитывая месячные надбавки, сотрудников для каждого отдела (Функции группировки, таблица «Сотрудники»).
11. Какая расходная сумма для предприятия, полученная суммированием заработных плат всех операционистов и кассиров? Выведите только сумму (Функции группировки, таблица «Сотрудники»).
12. Следует показать общее количество различных профессий, которые имеются в отделениях 10 и 40. Выведите только найденное число (Функции группировки, таблица «Сотрудники»).
13. Сформируйте список сотрудников, которые работают у Мартинса, исключая Харда. (иерархический запрос, таблица «Сотрудники»).
14. Составьте список номеров, имён и кредитов всех клиентов, которые имеют кредит от 3500$ и выше (Комбинированный запрос, таблица клиенты).
15. Покажите номера продуктов, относящихся к Футболу, их описание, действующий прайслист и минимальную цену. Используйте таблицы «Продукты» и «Цены». (объединение таблиц).
16. Представьте список служащих, которые к 1998 году проработали на этой фирме менее 1 года (таблица «Сотрудники»).
17. Сформировать XML документ со следующей структурой:
<Клиенты>
<Клиент номер=”ИМЯ ИЛИ НОМЕР КЛИЕНТА”>
<Заказ номер=”НОМЕР ЗАКАЗА” дата_заказа=”ДАТА ЗАКАЗА” дата_доставки=”ДАТА ДОСТАВКИ”>НОМЕР СЧЕТА</ Заказ >
…
…
</Клиент>
…
…
</Клиенты>
18. В зависимости от возраста и пола вывести для каждого человека: для женщин – до 20 «барышня», до 30 – «барышня за 20», после 30 – «мадам»; для мужчин – до 20 «отрок», до 30 – «кавалер», до 40 – «кавалер за 30», после 40 – «мужчина в самом расцвете сил». (условное ветвление)
1. Выведите список всех клиентов (простой запрос, таблица «Клиенты»).
2. Отыщите должность, фамилию и дату приёма на работу для каждого сотрудника (простой запрос, таблица «Сотрудники»).
3. Выведите имена сотрудников, заработную плату и персональный номер всех служащих, исключая тех, кто зарабатывает больше 4000$ (where, таблица «Сотрудники»).
4. Какие сотрудники работают либо клерками либо операционистами в отделении 20 или 40? (where, таблица «Сотрудники»).
5. Представьте отсортированный список заказов по возрастанию дат заказов, исключая клиентов (ЛЕОСТАР, ИНТЕРСПОРТ) Выведите все данные, где есть комментарий. Используйте при этом таблицу «Заказы». (order by).
6. Выведите список со всей информацией обо всех служащих, которые имеют чётные персональные номера (арифметика, таблица «Сотрудники»).
7. Составьте список, в котором отражены имена клиентов и показано, в какой позиции первый раз встретилась буква "И", начиная с первой буквы имени. Используйте таблицу Клиенты (работа с символьными строками, таблица «Сотрудники»).
8. Как высока сумма окладов для каждой профессии. (group by, таблица «Сотрудники»).
9. Покажите, сколько человек выполняют совместную работу и зарабатывают более 2000$ (group by, таблица «Сотрудники»).
10. Установите высшую и низшую заработную плату, выплачиваемую служащим каждого отдела. Рассчитайте разницу между ними (функции группировки, таблица «Сотрудники»).
11. Сформируйте список, который содержит количество человек по роду деятельности в отделах 10 и 40 (where + функции группировки, таблица «Сотрудники»).
12. Отыщите по таблице «Заказы» максимальное проданное количество каждого продукта. Отсортируйте результат по этому количеству в порядке возрастания (функции группировки).
13. Создайте список всех сотрудников, в котором отсутствуют Турс и Джонс. Также не следует выводить сотрудников, которые работают у Кларка (иерархический запрос, таблица «Сотрудники»).
14. Представьте список, в который отбирается дополнительная информация о футбольных продуктах из таблицы «STUD.Продукты» (комбинированный запрос).
15. Укажите имена всех служащих и всю информацию об отделах, в которых они работают, исключая отдел «Продаж» (where, объединение таблиц, таблицы «Сотрудники» и «Отделы»).
16. Представьте список служащих, которые к 1994 году проработали на этой фирме более 12 месяцев.
17. Сформировать XML документ со следующей структурой:
<Уровни зарплаты>
<Уровень нижний_предел=”НИЖНИЙ ПРЕДЕЛ” верхний_предел=”ВЕРХНИЙ ПРЕДЕЛ”>
<Сотрудник номер=”НОМЕР СОТРУДНИКА” должность=”ДОЛЖНОСТЬ” >ИМЯ СОТРУДНИКА</ Сотрудник >
…
…
</Уровень зарплаты>
…
…
</Уровни зарплаты>
18. Вывести первые 100 самых распространённых фамилий, игнорируя регистр, в котором они хранятся, а также начальные и конечные пробелы. Фамилии отсортировать в порядке убывания распространённости. Для каждой, в зависимости от распространённости, указать: больше 100 - "очень много"; от 30 до 100 - "много"; от 2 до 30 - "встречаются"; 1 - "единственный в своём роде". (условное ветвление)
1. Покажите все разнообразные должности (простой запрос, таблица «Сотрудники»).
2. Измените предыдущий запрос так, чтобы вместо оклады отображалась надбавка и отдел, в котором работает сотрудник (простой запрос, таблица «Сотрудники»).
3. Кто работает в отделении 40. Выведите из таблицы «STUD.Сотрудники» имена сотрудников и соответствующие должности (where).
4. Отыщите должности, которые зарабатывают менее 2500 и более 3000$ (where, таблица «Сотрудники»).
5. Представьте отсортированный по возрастанию минимальной цены и по убыванию даты начала список, в котором вся информация выводится из таблицы «STUD.Цены» (order by).
6. Выведите полугодовую среднюю заработную плату служащих, округлённую с точностью до 1000 (арифметика, таблица «Сотрудники»).
7. Выведите из таблицы «STUD.Сотрудники» имена сотрудников, а также ещё один столбец, в котором каждая появляющаяся в имени "К" была бы заменена на "С" (работа с символьными строками).
8. Сколько сотрудников имеется по каждому роду деятельности (group by, таблица «Сотрудники»).
9. Найдите суммы всех заработных плат по отделам. При этом кассиров и менеджеров не принимать во внимание. (group by, таблица «Сотрудники»).
10. Рассчитайте общую и среднюю заработную плату для каждой группы профессий по отделам (функции группировки, таблица «Сотрудники»).
11. Установите, в каких отделах менее, чем трое людей занимаются одним видом деятельности (функции группировки, таблица «Сотрудники»).
12. Найдите заказы и общую сумму по каждому заказу, где количество позиций, более чем одна. Используйте таблицу «Позиции» (функции группировки).
13. Представьте список текущих кредитов свыше 5000$. Дополнительный столбец должен отражать увеличенный на 1500$ кредит клиента (комбинированный запрос, таблица «Клиенты»).
14. Отыщите имена служащих и их место работы за исключением тех, которые работают в отделе бухгалтерии (объединение таблиц, таблицы «STUD.Сотрудники» и «Клиенты»).
15. Покажите имена, уровень и заработок сотрудников (объединение таблиц, таблицы «STUD.Сотрудники» и «Уровни_зарплаты»).
16. Сформировать XML документ со следующей структурой:
<Должности>
<Должность название=”ДОЛЖНОСТЬ”>
<Сотрудник номер=”НОМЕР СОТРУДНИКА” номер_отдела=”НОМЕР ОТДЕЛА” >ИМЯ СОТРУДНИКА</ Сотрудник >
…
…
</Должность>
…
…
</Должности>
17. Построить иерархию подчинённости для подразделений имеющих вид «Кафедра», указывая уровень (корень = 1). Отформатировать вывод результата, добавляя слева для каждого элемента число пробелов, равное 3*(уровень-1). Отсортировать каждую ветвь дерева по наименованию подразделения. Для каждого подразделения указать его вид. В запросе допустимо указывать ID вида подразделения.(иерархический запрос)
18. В зависимости от возраста и пола вывести для каждого человека: для женщин – до 20 «барышня», до 30 – «барышня за 20», после 30 – «мадам»; для мужчин – до 20 «отрок», до 30 – «кавалер», до 40 – «кавалер за 30», после 40 – «мужчина в самом расцвете сил». (условное ветвление)