лаба12БД
.docМинистерство образования и науки РФ
РГРТУ
Кафедра ЭВМ
Отчет
о лабораторной работе №12
«Разработка функций»
Выполнили:
Ст.гр. 048 (бр. 6)
Перунова Е.
Шумилова А.
Проверил:
Громов А.Ю.
Рязань, 2012г.
1. Изучение оператора CREATE FUNCTION для создания хранимых процедур.
1.1. Разработать функцию, возвращающую список книг, которые не пользуются популярностью.
CREATE FUNCTION F1()
RETURNS TABLE
AS
RETURN (SELECT Шифр
FROM Книги
WHERE Шифр NOT IN(SELECT Книга
FROM ВыдачаКниг))
GO
SELECT *
FROM F1()
1.2. Разработать функцию, возвращающую список абонентов, которые не читали книгу «Война и мир».
CREATE FUNCTION F2()
RETURNS TABLE
AS
RETURN (SELECT Фамилия
FROM Абоненты
WHERE ЧитБилет NOT IN(SELECT Абонент
FROM ВыдачаКниг
WHERE Книга IN (SELECT Шифр
FROM Книги
WHERE Название = 'Война и мир')))
GO
SELECT *
FROM F2()
1.3. Разработать функцию, возвращающую список книг, которые читали все абоненты.
CREATE FUNCTION F3()
RETURNS TABLE
AS
RETURN(SELECT Название
FROM Книги
WHERE Шифр IN (SELECT Книга
FROM ВыдачаКниг))
GO
SELECT *
FROM F3()
1.4. Разработать функцию, которая возвращает список книг, написанных автором с заданной фамилией.
CREATE FUNCTION F4(@Familia char(20))
RETURNS TABLE
AS
RETURN(SELECT Название
FROM Книги
WHERE Автор = @Familia)
GO
SELECT *
FROM F4('Пушкин')
1.5. Разработать функцию, которая вычисляет суммарное количество книг по каждому автору и отклонение его от среднего суммарного количества книг.
CREATE FUNCTION F5()
RETURNS @T TABLE (Автор char(20), [Суммарное кол-во] real, Отклонение real)
AS
BEGIN
DECLARE @Среднее real
INSERT INTO @T(Автор, [Суммарное кол-во])
SELECT Автор, sum(КолЭкз)
FROM Книги
GROUP BY Автор
SELECT @Среднее = avg([Суммарное кол-во])
FROM @T
UPDATE @T
SET Отклонение = [Суммарное кол-во] - @Среднее
RETURN
END
GO
SELECT *
FROM F5()