实验四复杂查询(2).doc_第1页
实验四复杂查询(2).doc_第2页
实验四复杂查询(2).doc_第3页
实验四复杂查询(2).doc_第4页
实验四复杂查询(2).doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.复杂查询(2)实验报告学号:姓名:项目名称:实验四 复杂查询(2)一 一、实验目的(1) 熟练掌握SQL语句的使用。(2) 熟练使用SQL语句进行复杂的连接操作。二、实验内容及要求 导入实验三中保存的订单数据库OrderDB.mdf。完成之后,进行以下的实验。写出相对应的SQL语句,并给出查询结果。1 统计订单主表的订单金额。(用订单明细表中的订单汇总金额更新订单主表相应的订单金额属性)2 查询订单金额最高的订单编号、客户姓名、销售员名称和相应的订单金额。3 统计客户号为“C20050001”的客户的客户名、订单数、订货总额和平均订货金额。(表头用中文显示)4 统计每个客户的客户号、客户名、订单数、订货总额和平均订货金额。(表头用中文显示)5 查询没有订购“52倍速光驱”或“17寸显示器”的客户编号、客户名称。(包括没有订购任何商品的客户)6 查询有订购商品,但没有订购“52倍速光驱”或“17寸显示器”的客户编号、客户名称。 7 查找订购了 “32M DRAM”的商品的客户编号、客户名称、订货总数量和订货总金额。8 查询每个客户订购的商品编号、商品所属类别、商品数量及订货金额,结果显示客户名称、商品所属类别、商品数量及订货金额,并按客户编号升序和按订货金额的降序排序输出。9 按商品类别查询每类商品的订货平均单价在280元(含280元)以上的订货总数量、订货平均单价和订货总金额。10 查找至少有2次销售的业务员名单、订单号和销售日期,并按业务员姓名升序排序输出。日期按yyyy-mm-dd显示。11 查找销售金额最大的客户号、客户名称和总货贷额。12 查找销售总额少于5000元的销售员编号、姓名和销售额。13 查找至少订购了3种商品的客户编号、客户名称、商品编号、商品名称、数量和金额,并按客户编号排序输出。14 查找同时订购了商品编号为“P20070001”和商品编号为“P20070002”的商品的客户编号、客户姓名、商品编号、商品名称和销售数量,按客户编号排序输出。15 计算每一商品每月的销售次数和销售金额总和,结果显示商品编号、销售月份、每月的销售次数和销售金额总和,并将结果首先按销售月份升序排序,再按订货金额降序输出。三、实验结果1.统计订单主表的订单金额。SQL语句:UPDATE OrderMasterSET orderSum=金额From OrderMaster a,(SELECT orderNo,SUM(quantity*price) 金额 FROM OrderDetail GROUP BY orderNo) bWHERE a.orderNo=b.orderNo查询结果:2.查询订单金额最高的订单编号、客户姓名、销售员名称和相应的订单金额。SQL语句:SELECT c.orderNo,b.customerName,a.employeeName,orderSumFROM Employee a,Customer b,OrderMaster cWHERE a.employeeNo=c.salerNo AND b.customerNo=c.customerNo AND orderSum=(SELECT MAX(orderSum) FROM OrderMaster ) 查询结果:3.统计客户号为“C20050001”的客户的客户名、订单数、订货总额和平均订货金额。(表头用中文显示)SQL语句:SELECT customerName 客户名,定单数=COUNT(a.orderNo), orderSum 订货总额,(orderSum/COUNT(a.orderNo) 平均订货金额FROM OrderDetail a,Customer b,OrderMaster cWHERE a.orderNo=c.orderNo AND b.customerNo=c.customerNo AND c.customerNo=C20050001GROUP BY customerName,orderSum查询结果:4.统计每个客户的客户号、客户名、订单数、订货总额和平均订货金额。(表头用中文显示)SQL语句:SELECT b.customerNo 客户号,customerName 客户名,定单数=COUNT(a.orderNo), orderSum 订货总额,(orderSum/(COUNT(a.orderNo) 平均订货金额FROM OrderDetail a,Customer b,OrderMaster cWHERE a.orderNo=c.orderNo AND b.customerNo=c.customerNo GROUP BY customerName,orderSum,b.customerNo查询结果:5.查询没有订购“52倍速光驱”或“17寸显示器”的客户编号、客户名称。(包括没有订购任何商品的客户)SQL语句:SELECT customerNo,customerNameFROM customer WHERE customerNo not in (SELECT a.customerNo FROM customer a,ordermaster b WHERE a.customerNo=b.customerNo and orderNo in (SELECT orderNo FROM orderdetail WHERE productNo in (SELECT productNo FROM product WHERE productName=52倍速光驱 or productName=17寸显示器)查询结果:6.查询有订购商品,但没有订购“52倍速光驱”或“17寸显示器”的客户编号、客户名称。SQL语句:SELECT DISTINCT d.customerNo,customerNameFROM Customer c,OrderMaster dWHERE c.customerNo=d.customerNo AND d.customerNo IN (SELECT customerNo FROM customer WHERE customerNo not in (SELECT a.customerNo FROM customer a,ordermaster b WHERE a.customerNo=b.customerNo and orderNo in (SELECT orderNo FROM orderdetail WHERE productNo in (SELECT productNo FROM product WHERE productName=52倍速光驱 or productName=17寸显示器)查询结果:7.查找订购了 “32M DRAM”的商品的客户编号、客户名称、订货总数量和订货总金额。SQL语句:SELECT b.customerNo,customerName,quantity,总金额=quantity*priceFROM OrderDetail a,Customer b,OrderMaster c,Product dWHERE ductNo=ductNo AND a.orderNo=c.orderNo AND b.customerNo=c.customerNo AND productName=32M DRAM查询结果:8.查询每个客户订购的商品编号、商品所属类别、商品数量及订货金额,结果显示客户名称、商品所属类别、商品数量及订货金额,并按客户编号升序和按订货金额的降序排序输出。SQL语句:SELECT customerName,productClass,quantity,orderSumFROM OrderDetail a,Customer b,OrderMaster c,Product dWHERE ductNo=ductNo AND a.orderNo=c.orderNo AND b.customerNo=c.customerNo ORDER BY b.customerNo,orderSum DESC 查询结果:9.按商品类别查询每类商品的订货平均单价在280元(含280元)以上的订货总数量、订货平均单价和订货总金额。SQL语句:SELECT productNo,订货总数量=SUM(quantity), 订货平均单价=SUM(price)/COUNT(*),订货总金额=sum(quantity*price)FROM OrderDetailGROUP BY productNoHAVING SUM(price)/COUNT(*)=280查询结果:10.查找至少有2次销售的业务员名单、订单号和销售日期,并按业务员姓名升序排序输出。日期按yyyy-mm-dd显示。SQL语句:SELECT employeeNo,employeeName,orderNo, convert(char(10),orderDate,120) orderDateFROM Employee a,OrderMaster b, (SELECT salerNo FROM OrderMaster GROUP BY salerNo HAVING COUNT(*)=2) cWHERE a.employeeNo=b.salerNo AND b.salerNo=c.salerNoGROUP BY employeeNo,employeeName,orderNo,orderDateORDER BY employeeName查询结果:11.查找销售金额最大的客户号、客户名称和总货贷额。SQL语句:SELECT TOP 1 c.customerNo,customerName,MAX(总货贷额) 总货贷额FROM (SELECT customerNo,SUM(orderSum) 总货贷额 FROM OrderMaster GROUP BY customerNo) a,OrderMaster b,Customer cWHERE a.customerNo=b.customerNo AND b.customerNo=c.customerNo GROUP BY customerName,c.customerNoORDER BY 总货贷额DESC查询结果:12.查找销售总额少于5000元的销售员编号、姓名和销售额。SQL语句:SELECT salerNo,employeeName,orderSumFROM Employee a,OrderMaster bWHERE a.employeeNo=b.salerNoGROUP BY orderSum,salerNo,employeeNameHAVING orderSum=3) h)查询结果:14.查找同时订购了商品编号为“P20070001”和商品编号为“P20070002”的商品的客户编号、客户姓名、商品编号、商品名称和销售数量,按客户编号排序输出。SQL语句:SELECT c.customerNo,customerName,ductNo,productName,quantityFROM OrderDetail a,Customer b,OrderMaster c,Product dWHERE ductNo=ductNo AND a.orderNo=c.orderNo AND b.customerNo=c.customerNo AND ductNo=P20070001 AND a.orderNo IN(SELECT orderNo FROM OrderDetail WHERE productNo=P20070002)ORDER BY customerNo查询结果:15.计算每一商品每月的销售次数和销售金额总和,结果显示商品编号、销售月份、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论