您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据结构与算法 > 基于AdventureWorks数据库的查询报告
广西大学2014数据库原理实验报告学号:姓名:专业班级:指导老师:成绩:实验基于AdventureWorks数据库的查询练习题练习加强:下面的查询基于AdventureWorks数据库,以附件的形式提供给大家。大家在进行查询练习前一定要先熟悉一下该数据库的表结构和用到的表的字段的含义。这些准备工作可以通过创建数据库关系图或者上网搜索AdventureWorks2008数据字典来完成。下列这些查询操作涉及你们所学的各种查询知识,是数据库查询的综合运用,请大家尽力完成。7.在Product表中查出所有产品信息(列:Name,ProductNumber,ListPrice),按产品名升序排列。select*from[AdventureWorksLT2008].[SalesLT].[Product]orderbyNameasc8.查出每种产品的销售总额和折扣总额。涉及表:Product、SalesOrderDetail,按产品名升序排列。共三列。必须使用join。selectName产品,LineTotal销售总额,OrderQty*UnitPriceDiscount折扣总额from[AdventureWorksLT2008].[SalesLT].[Product]join[AdventureWorksLT2008].[SalesLT].[SalesOrderDetail]on[AdventureWorksLT2008].[SalesLT].[Product].[ProductID]=[AdventureWorksLT2008].[SalesLT].[SalesOrderDetail].[ProductID]orderbyNameasc9.查出销售订单中每种产品的收入金额(扣除折扣后)。涉及表:Product、SalesOrderDetail,按产品名降序排列。共三列。必须使用join。selectSalesOrderID订单,Name产品,LineTotal-OrderQty*UnitPriceDiscount收入金额from[AdventureWorksLT2008].[SalesLT].[Product]join[AdventureWorksLT2008].[SalesLT].[SalesOrderDetail]on[AdventureWorksLT2008].[SalesLT].[Product].[ProductID]=[AdventureWorksLT2008].[SalesLT].[SalesOrderDetail].[ProductID]orderbyNameasc10.查出产品型号为“Long-SleeveLogoJersey*”(*为任意字符)的每种产品名。涉及表:Product、ProductModel。一列。使用EXISTS和IN两种方法完成。EXISTS:selectProduct.Namefrom[AdventureWorksLT2008].[SalesLT].[Product]whereexists(selectProductModel.ProductModelIDfrom[AdventureWorksLT2008].[SalesLT].[ProductModel]where[ProductModel].Name='Long-SleeveLogoJersey'andProductModel.ProductModelID=Product.ProductModelID)IN:selectProduct.Namefrom[AdventureWorksLT2008].[SalesLT].[Product]where'Long-SleeveLogoJersey'in(select[ProductModel].Namefrom[AdventureWorksLT2008].[SalesLT].[ProductModel]whereProductModel.ProductModelID=Product.ProductModelID)11.查出每种产品类型均价等于该类产品最高标价的产品类型号。涉及表:Product。GROUPBY、子查询。selectProduct.ProductModelID,--每种产品类型均价avg(ListPrice)asOrderAveragefrom[AdventureWorksLT2008].[SalesLT].[Product]groupbyProduct.ProductModelIDselectProduct.ProductModelID,--该类产品最高标价MAX(ListPrice)asLargestOrderPricefrom[AdventureWorksLT2008].[SalesLT].[Product]groupbyProduct.ProductModelID查询方法:selectProduct.ProductModelID,MAX(ListPrice)from[AdventureWorksLT2008].[SalesLT].[Product]groupbyProduct.ProductModelIDhavingMAX(ListPrice)=avg(ListPrice)12.查出每个销售订单的销售总额。两列:订单号、销售总额。涉及表:SalesOrderDetail。selectSalesOrderDetail.SalesOrderIDas订单号,sum(LineTotal)as销售总额from[AdventureWorksLT2008].[SalesLT].[SalesOrderDetail]groupbySalesOrderDetail.SalesOrderID13.查出每种产品销售平均价格以及该产品迄今为止的总销售额。涉及表:SalesOrderDetail。三列:ID、均价、总额。selectSalesOrderDetail.ProductIDasID,avg(UnitPrice)as均价,sum(LineTotal)as总额from[AdventureWorksLT2008].[SalesLT].[SalesOrderDetail]groupbySalesOrderDetail.ProductID14.查出标价大于$1000的产品,求出这些产品的均价并按类型号分组。涉及表:Product。selectProduct.ProductModelID,avg(ListPrice)from[AdventureWorksLT2008].[SalesLT].[Product]whereListPrice1000groupbyProduct.ProductModelID15.查出完成了相同单笔销售额的订单的平均销售产品数量和这个销售总额。涉及表:SalesOrderDetail。selectSalesOrderDetail.LineTotal单笔销售额,avg(OrderQty)平均销售产品数量,sum(LineTotal)销售总额from[AdventureWorksLT2008].[SalesLT].[SalesOrderDetail]groupbySalesOrderDetail.LineTotal16.查出单笔销售产品数量大于10的订单销售的产品ID和均价。分组。涉及表:SalesOrderDetail。selectSalesOrderDetail.ProductID,avg(UnitPrice)均价from[AdventureWorksLT2008].[SalesLT].[SalesOrderDetail]whereOrderQty10groupbySalesOrderDetail.ProductID17.查出总销量大于5的产品ID,并排序。必须使用HAVING。涉及表:SalesOrderDetail。selectSalesOrderDetail.ProductID,sum(OrderQty)from[AdventureWorksLT2008].[SalesLT].[SalesOrderDetail]groupbySalesOrderDetail.ProductIDhavingsum(OrderQty)5orderbysum(OrderQty)desc18.查出单价小于25,且平均订单量大于5的产品ID。涉及表:SalesOrderDetail。selectSalesOrderDetail.ProductID,avg(OrderQty)平均订单量,avg(UnitPrice)单价from[AdventureWorksLT2008].[SalesLT].[SalesOrderDetail]groupbySalesOrderDetail.ProductIDhavingavg(OrderQty)5andavg(UnitPrice)2519.查出总销售额大于$10000且平均单笔销量小于3的产品。三列:ID、均价、总销售额。涉及表:SalesOrderDetail。selectSalesOrderDetail.ProductIDID,avg(UnitPrice)均价,sum(LineTotal)总销售额from[AdventureWorksLT2008].[SalesLT].[SalesOrderDetail]groupbySalesOrderDetail.ProductIDhavingavg(OrderQty)3andsum(LineTotal)1000020.统计在订单中至少包含9项的产品ID及其销售总额。分析讨论:EXISTS返回的是布尔值,它不返回实际的结果,用的时候要注意。In相当于用一个表中的数据到另一个表中进行比对,having用于合计函数,这时不能用where,当要对数据进行分组计算时,要注意各条件间的聚合问题。
本文标题:基于AdventureWorks数据库的查询报告
链接地址:https://www.777doc.com/doc-7235072 .html