关系中的函数依赖和多值依赖,并使你的关系能符合更高范式。
解:数据库模式
Dpartment(id,name,head_id,desc)
Salesman(empid,name,idNo,gender,birthdate,phone,dept_id) Menber(memid,name,idno,gander,address,phone) Book(bName,type,ISBN,Author,publisher,price) Sales_order(order#,signdate,sales_id,memid)
Sales_item(order#,line#,ISBN,quantity,single_price)
外键
Dpartment(head_id) →Salesman(empid) Salesman(dept_id) →Dpartment(dept_id) Sales_order(sales_id) →Salesman(empid) Sales_order(memid) →Member(id)
Sales_item(order#) →Sales_order(order#) Sales_item(ISBN) →Book(ISBN)
3. 使用SQL语言完成下面的计算:
1) 计算2001年12月签订的所有订单的订单号、签单日期、销售数量和销售金额,并按销售金额从小到大排列。
2) 计算2001年12月签订的销售金额最大的订单号、销售员姓名和销售金额。(注意
利用已有查询定义视图)
3) 计算2001年12月所有销售员的员工号、姓名及其销售金额。(注意使用外连接,
没有订单的销售员的销售金额应为0)
解:
(1)select Sales_order.order#, signdate,sum(quantity),sum(quantity* single_price) as
cost
from Sales_order inner join Sales_item on Sales_order.order#=Sales_item.order#
where signdate>=’2001-12-01’ and signdate<=’2001-12-31’
group by order.order#, signdate order by cost
(2) create view V1 as
select sales_order. sales_id, order#,sum(quantity*single_price) as COST
from sales_order inner join sales_item on sales_order.order#= Sales_item.order#
where signdate>=’2001-12-01’ and signdate<=’2001-12-31’
group by sales_order, sales_id selectorder#, name, cost
from Salesman inner join V1 on empid= sales_id where cost >=all (select max(cost) from V1)
(3) select empid, name, sum(quantity*single_price) as cost
from Salesman left outer join (sales_order inner join sales_item on sales_order.order#= Sales_item.order#) on empid=sales_id
where signdate>=’2001-12-01’ and signdate<=’2001-12-31’
6
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新初中教育数据库系统系统原理试卷(一) (2)全文阅读和word下载服务。
相关推荐: