--2.设计一个名称为函数fn_book,要求能根据给定的院系返回该院系的人均借阅图书的册数。设有数据库exam中包含图书表book、读者表reader与借阅表borrow。其中: --nbook表包含的字段有bookId(图书号)、bookName(图书名)、author(作者)。 --nreader表包含的字段有readerId(读者号)、readerName(读者名)、department(所在院系)。 --nborrow表包含的字段有borrowId(借阅号,主键)、readerId(读者号)、bookId(图书号)、borrowDate(借阅日期)、returnDate(归还日期)
时间: 2024-02-11 19:09:07 浏览: 63
好的,根据您的需求,我可以为您设计一个名为fn_book的函数,函数的输入参数为院系名称,输出为该院系的人均借阅图书的册数。具体实现如下:
```
CREATE FUNCTION fn_book(department_name VARCHAR(50))
RETURNS FLOAT
BEGIN
DECLARE total_borrowed_books INT;
DECLARE total_readers INT;
DECLARE avg_books_per_reader FLOAT;
-- 计算该院系借阅的总册数
SELECT COUNT(*) INTO total_borrowed_books
FROM borrow b
JOIN reader r ON b.readerId = r.readerId
WHERE r.department = department_name;
-- 计算该院系的读者人数
SELECT COUNT(*) INTO total_readers
FROM reader r
WHERE r.department = department_name;
-- 计算人均借阅册数
SET avg_books_per_reader = total_borrowed_books / total_readers;
-- 返回人均借阅册数
RETURN avg_books_per_reader;
END
```
使用方法:
```
SELECT fn_book('计算机科学与技术') as avg_books_per_reader;
```
该语句会返回计算机科学与技术院系的人均借阅册数。
阅读全文