СУБД / субд
.doc
Задание №4.
Рассмотрим базу данных сотрудников, состоящую из сле-
дующих двух таблиц:
сотрудники
(номер_сотрудника INTEGER PRIMARY KEY,
фамилия CHAR(20),
...)
подчиненные (
номер_сотрудника INTEGER NOT NULL,
номер_подчиненного INTEGER NOT NULL,
фамилия_подчиненного CHAR(20) NOT NULL,
...
PRIMARY KEY (номер_сотрудника,номер_подчиненного),
FOREIGN KEY номер_сотрудника REFERENCES
сотрудники(номер_сотрудника))
Задача состоит в том, чтобы написать запрос, показывающий сколько подчиненных у каждого сотрудника.
Запрос должен выдавать номер сотрудника, фамилию сотрудника, количество подчиненных у этого сотрудника.
CREATE FUNCTION количество_подчиненых (
номер IN подчиненные.номер_сотрудника %TYPE
) RETURN INTEGER IS
количество INTEGER;
BEGIN
SELECT COUNT(*) INTO количество
FROM подчиненные
WHERE номер_сотрудника = номер;
RETURN количество;
END количество_подчиненных;
SELECT номер_сотрудника, фамилия, количество_подчиненных (номер_сотрудника)
FROM сотрудники;
-- создание таблиц
CREATE TABLE сотрудники (
номер_сотрудника INTEGER NOT NULL,
фамилия CHAR(20) NOT NULL,
PRIMARY KEY (номер_сотрудника)
);
CREATE TABLE подчиненные (
номер_сотрудника INTEGER NOT NULL,
номер_подчиненого INTEGER NOT NULL,
фамилия_ подчиненного CHAR(20) NOT NULL,
PRIMARY KEY (номер_сотрудника, номер_подчиненого )
FOREIGN KEY (номер_сотрудника) REFERENCES
сотрудники (номер_сотрудника)
);