Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ_5_10.doc
Скачиваний:
4
Добавлен:
23.09.2019
Размер:
104.45 Кб
Скачать

Экзаменационный билет (Базы данных Студент и Human Resources)

  1. Создать таблицу Test, состоящую из двух столбцов ID и Text. Столбец ID – ключевой, а столбец Text содержит символьную информацию, включающую цифры и символы. Требуется создать запрос, который выведет информацию из второго столбца в отсортированном виде. Сортировка должна быть произведена по следующим правилам: символьные выражения, начинающиеся с чисел должны быть отсортированы в порядке увеличения чисел, а в случае выражений с двумя одинаковыми числами – по алфавиту той части выражении, которая следует за числом, считая число менее приоритетным. Например:

Test

9oiuy

12astr

76hjku

76hjk8

123gfyu

123piu

765mmm

Задачу решить без использования регулярных выражений.

  1. Для таблицы, состоящей из двух столбцов, вывести только те строки, которые не содержат во втором столбце значений, имеющихся в первом столбце. Например, для таблицы. Например, для таблицы:

С1

С2

gfd

tre

jhk

ghj

uyt

tre

tre

ff

fff

hh

ghj

asd

Результат должен быть:

С1

С2

gfd

tre

jhk

ghj

uyt

tre

fff

hh

  1. Вывести фамилии и имена сотрудников, у которых в фамилии или имени есть 3 одинаковые буквы.

  2. Вывести названия департаментов, при этом для департаментов, у которых в названии два или более слов через пробел, выводить только второе слово.

  3. Вывести информацию о сотрудниках и годах их работы. Первый столбец - годы (с 1987 по 2001), второй столбец - количество сотрудников, работавших в этом году в десятом департаменте, третий столбец - в двадцатом, четвертый - в тридцатом и так до 120-го департамента. Всего 13 столбцов вместе с годом и 15 строк.

  4. Создать запрос для получения информации о количестве полученных студентами пятерок, четверок, троек и двоек по дням недели. Результат запроса должен быть представлен в виде:

Кол-во 5

Кол-во 4

Кол-во 3

Кол-во 2

Итого

Понедельник

Вторник

Среда

…….

Итого:

Первый столбец должен быть отсортирован по дням недели.

  1. Создать запрос для вывода списка фамилий студентов-хвостистов с указанием дисциплин, которые им необходимо еще досдать в данную сессию. Названия дисциплин должны быть выведены в строчку через запятую и отсортированы по алфавиту.

  2. Для заданного интервала лет вывести количество каждого дня недели в году. Результат представить в виде:

    Год

    Понедельник

    Вторник

    Среда

    Четверг

    Пятница

    Суббота

    Воскресенье

  3. Выбрать сотрудников, для которых

- в таблице истории занятия должностей зафиксированы переходы на другую должность и

- в таблице истории занятия должностей отсутствуют сведения об их первой должности - той, которую они занимали при приеме на работу в компанию.

В результат вывести:

  1. Идентификатор сотрудника.

  2. Фамилию сотрудника.

  3. Дату, когда сотрудник был принят на работу.

  4. Идентификатор должности, которую занимает сотрудник в данный момент.

  5. Идентификатор подразделения, к которому в данный момент приписан сотрудник.

Результат отсортировать по возрастанию по полям:

  • дата, когда сотрудник был принят на работу,

  • фамилия сотрудника.

  1. Создать запрос для вывода информации о студентах, у которых интервал между датами сдачи экзаменов составляет менее трех дней. Информацию вывести в виде:

    Фамилия

    Дисциплина 1

    Дата сдачи1

    Дисциплина 2

    Дата сдачи 2

  2. Создать запрос для получения сведений (Фамилия, Группа, Специальность, Отличник/Хорошист) обо всех отличниках в группе, а если таковых нет, то обо всех хорошистах. (Под отличниками понимаем студентов, сдавших все предусмотренные учебные планом экзамены на отлично с первого раза. Под хорошистами понимаем студентов, сдавших все предусмотренные учебные планом экзамены на отлично или хорошо с первого раза).

  3. Одной командой SELECT вывести список сотрудников компании, имеющих наименьшие оклад среди сотрудников подразделения, в котором они работают.

Сведения о сотрудниках, для которых неизвестно подразделение компании, к которому они приписаны выводить не нужно.

В результат вывести:

1.Идентификатор подразделения компании, к которому приписан сотрудник.

2. Фамилию сотрудника.

3.Оклад, установленный сотруднику.

В команде SELECT запрещается использовать:

  • Фразы WITH, GROUP BY,HAVING, ORDER BY, CONNECT BY, START WITH,

  • Условия IN, =ANY, =SOME, NOT IN, <> ALL, EXISTS, NOT EXISTS,

  • Подзапросы (subqueries), в том числе подзапросы во фразе FROM,

  • Иерархические запросы (hierarchical queries),

  • Скалярное выражение подзапроса (scalar subquery expression),

  • Агрегатные функции (aggregate functions) – MIN,MAX, SUM,COUNT, AVG и др.

  • Аналитические функции (analytic functions)

  1. Вычислить число Пи с точностью 40 знаков после запятой. Для расчета использовать быстро сходящуюся последовательность

  1. Одной командой SELECT вывести информацию обо всех сотрудниках, которые приняты на работу раньше руководителя подразделения компании, к которому они приписаны в данный момент. В результате вывести следующие данные:

  1. Название подразделения компании

  2. Имя сотрудника

  3. Фамилия сотрудника

  4. На сколько суток раньше руководителя подразделения данный сотрудник был принят на работу

  1. Вывести в виде таблицы доли зарплаты сотрудников в общем фонде зарплаты в виде строк по каждому из сотрудников, предваряемых строкой по отделу в целом.

  1. Название отдела

  2. Фамилия сотрудника или пусто, если строка относится к отделу в целом

  3. Доля зарплаты сотрудника или отдела в процентах с точностью 2 знака после запятой

Общую зарплату считать для всех сотрудников, у которых есть указание о принадлежности к отделу, выводить только отделы, в которых есть сотрудники. Следует обеспечить общую сумму долей отделов равной 100%, а в каждом отделе сумма долей сотрудников должна быть равна доле отдела в целом. Для выравнивания использовать последних по алфавиту сотрудников в отделе и последний по алфавиту отдел.

Таблица должна быть упорядочена по названию отдела, фамилии сотрудника.

  1. Для каждого подразделения компании создать список рассылки сотрудникам, используя столбцы Email и Department_id таблицы EMPLOYEES. Одним предложением SELECT нужно вывести таблицу из двух столбцов:

1. Идентификатор подразделения - числовой столбец, представляющий идентификатор подразделения компании.

2. Список адресов сотрудников данного подразделения - символьный столбец, представляющий адреса электронной почты для всех сотрудников подразделения, заданного в первом столбце строки

Адрес каждого сотрудника должен быть представлен значением столбца Email таблицы EMPLOYEES, дополненным постфиксом @АСМЕ.СОМ.

Адреса в списке должны быть разделены символом ';' (точка с запятой). В конце строки списка адресов точки с запятой быть НЕ ДОЛЖНО.

Адреса в списке должны быть отсортированы в порядке возрастания их символьных значений слева направо.

Все адреса должны быть представлены заглавными буквами.

Выводимый результат должен удовлетворять следующим условиям:

  • Строки должны быть отсортированы в порядке возрастания идентификаторов подразделений компании.

  • Подразделения с пустыми значениями номера Department_id должны быть исключены.

Пример выводимой таблицы:

DEPARTMENT_ID

EMPS_IN_DEPT

10

JWHALEN@ACME.COM

30

AKHOO@ACME.COM;DRAPHEAL@ACME.COM;GHIMURO@ACME.COM

5 0

ABULLOACME.COM;ACABRIO@ACME.COM;AFRIPPiACME.COM