Скачиваний:
24
Добавлен:
15.06.2014
Размер:
30.21 Кб
Скачать

Министерство образования Республики Беларусь

Белорусский государственный университет информатики и радиоэлектроники

Кафедра ЭВМ

Лабораторная работа №4

«Работа с реляционной базой данных на языке SQL»

Выполнил: Проверил:

Студент гр. 950502 Калабухов Е.В.

Алешкевич М.В.

Минск 2011

Запрос 1

Найти клиентов, которые никогда не снимали деньги в конкретном банкомате.

SELECT Client.*

FROM Client, Removal_of_money

WHERE (((Client.C_passport_number) NOT IN (Removal_of_money.C_passport_number)) And ((Removal_of_money.Cd_number)=[Номер банкомата]));

Запрос 2

Найти клиентов, которые обслуживались сотрудниками всех возможных филиалов.

SELECT Client.*

FROM Client, (SELECT C_passport_number FROM (SELECT C_passport_number, B_number FROM Service, Employee, Department WHERE (Employee.E_phone_number=Service.E_phone_number) AND (Employee.D_number=Department.D_number)) GROUP BY C_passport_number HAVING COUNT(B_number)=(SELECT COUNT(*) FROM Branch)) AS t2

WHERE Client.C_passport_number=t2.C_passport_number;

Запрос 3

Найти сотрудника с наибольшим числом операций с клиентами.

SELECT Employee.*

FROM (SELECT t FROM (SELECT E_phone_number AS t, (COUNT(E_phone_number)) AS A FROM Service GROUP BY E_phone_number) WHERE A=(SELECT MAX(A) FROM (SELECT E_phone_number AS t, (COUNT(E_phone_number)) AS A FROM Service GROUP BY E_phone_number))) AS numb, Employee

WHERE Employee.E_phone_number=numb.t;

Запрос 4

Для каждого филиала подсчитать процент рабочих от общего числа сотрудников и число различных клиентов, которые в этом филиале обслуживались.

SELECT B_number AS Филиал, COUNT(tel)/(SELECT COUNT(*) FROM Employee)*100 AS [% рабочих], COUNT(Pass) AS [Клиенты]

FROM (SELECT Department.B_number, Employee.E_phone_number AS tel, Service.C_passport_number AS Pass FROM Employee, Department, Service

WHERE (Employee.D_number=Department.D_number) AND (Service.E_phone_number=Employee.E_phone_number)) AS t1

GROUP BY t1.B_number;

Запрос 5

Найти сотрудников по шаблону ФИО (шаблон – маска для оператора LIKE) и отсортировать найденных сотрудников по дате последнего обслуживания клиентов.

SELECT Employee.*, posl AS Last_service

FROM Employee,

(SELECT t2.*

FROM

(SELECT MAX(S_date) AS posl, t1.E_phone_number

FROM

(SELECT Employee.*, Service.S_date

FROM Employee, Service

WHERE (E_name LIKE '*'+ФИО+'*') AND (Service.E_phone_number=Employee.E_phone_number)) AS t1

GROUP BY t1.E_phone_number) AS t2

ORDER BY posl ASC) AS t3

WHERE Employee.E_phone_number=t3.E_phone_number;

Соседние файлы в папке Лаба 1-4 [Вариант Банк]