还剩12页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
实验二题目1查找有销售记录的客户编号、名称和订单总额selecta.customerNoa.customerNameb.orderNosumquantity*pri__fromCustomeraOrder__sterbOrderDetailcwherea.customerNo=b.customerNoandb.orderNo=c.orderNogroupbya.customerNoa.customerNameb.orderNo2在订单明细表中查询订单金额最高的订单selecttop1orderNosumquantity*pri__orderSumfromOrderDetailgroupbyorderNoorderbyorderSumdesc或selectorderNosumquantity*pri__orderSumfromOrderDetailgroupbyorderNoh__ingsumquantity*pri__=select__xorderSumfromselectorderNosumquantity*pri__orderSumfromOrderDetailgroupbyorderNob3查询没有订购商品的客户编号和客户名称SELECTa.customerNocustomerNameFROMCustomeraWHEREa.customerNoNOTINSELECTcustomerNoFROMOrder__ster3找出至少被订购3次的商品编号、订单编号、订货数量和订货金额,并按订货数量的降序排序输出SELECTa.productNoorderNoquantityquantity*pri__moneyFROMOrderDetailaSELECTproductNoFROMOrderDetailGROUPBYproductNoH__INGcount*=3bWHEREa.productNo=b.productNoORDERBYa.productNoquantityDESC4使用子查询查找16MDRAM的销售情况,要求显示相应的销售员的姓名、性别,销售日期、销售数量和金额,其中性别用“男”、“女”表示SELECTemployeeNamecase___whenFthen女whenMthen男end___orderDatequantityquantity*pri__金额FROMEmployeeaOrder__sterbOrderDetailcWHEREa.employeeNo=b.salerNoANDb.orderNo=c.orderNoANDc.ProductNoINSELECTf.ProductNoFROMOrder__sterdOrderDetaileProductfWHEREd.orderNo=e.orderNoANDProductName=32MDRAM5查询Order__ster表中订单金额最高的订单号及订单金额selectorderNoorderSumfromOrder__sterwhereorderSum=select__xorderSumfromOrder__ster6计算出一共销售了几种商品selectcountdistinctproductNofromOrderDetail7显示OrderDetail表中每种商品的订购金额总和,并且依据销售金额由大到小排序输出selectproductNosumquantity*pri__summoneyfromOrderDetailgroupbyproductNoorderbysummoneydesc8查找销售总额大于1000元的销售员编号、姓名和销售额selecta.employeeNoa.employeeNamesumquantity*pri__su__oneyfromEmployeeaOrderDetailbOrder__stercwherea.employeeNo=c.salerNoandb.orderNo=c.orderNogroupbya.employeeNoa.employeeNameh__ingsumquantity*pri__10009找出目前业绩未超过5000元的员工,并按销售业绩的降序排序输出selectemployeeNoemployeeNameorderSumfromEmployeeaselectsalerNosumorderSumorderSumfromOrder__stergroupbysalerNoh__ingsumorderSum5000bwherea.employeeNo=b.salerNoorderbyorderSumdesc10在Employee表中查询薪水超过员工平均薪水的员工信息SELECT*FROMEmployeeWHEREsalarySELECT__gsalary__gsalaryFROMEmployee11计算每一种商品的销售数量、平均销售单价和总销售金额SELECTProductNosumquantity数量__gpri__平均单价sumpri__*quantity总额FROMOrderDetailGROUPBYProductNo12查找至少有3次销售的业务员__和销售日期SELECTemployeeNameorderDateFROMEmployeeaOrder__sterbSELECTsalerNoFROMOrder__sterGROUPBYsalerNoH__INGcount*=3cWHEREa.employeeNo=b.salerNoANDb.salerNo=c.salerNo13用存在量词查找没有订货记录的客户名称SELECTcustomerNameFROMCustomercWHERENOTEXISTSSELECT*FROMOrder__steraWHEREa.customerNo=c.customerNo14查询订单中所订购的商品数量没有超过10个的客户编号和客户名称SELECTa.CustomerNoCustomerNameFROMCustomeraWHEREa.CustomerNoINSELECTCustomerNoFROMOrder__sterbOrderDetailcWHEREb.orderNo=c.orderNoGROUPBYCustomerNoH__INGsumquantity1015在销售明细表中按商品编号进行汇总,统计每种商品的销售数量和金额SELECTproductNo商品编号sumquantity销售数量sumquantity*pri__销售金额FROMOrderDetailGROUPBYproductNoORDERBYproductNo16按客户编号统计每个客户2008年2月的订单总金额SELECTcustomerNoorderDatesumorderSumFROMOrder__sterWHEREyearorderDate=2008ANDmonthorderDate=2GROUPBYcustomerNoorderDate17查找定单金额高于8000的所有客户编号SELECTcustomerNoFROMOrder__sterWHEREorderSum800018显示每种商品的销售金额总和,并依销售金额由大到小输出SELECTproductNo商品编号sumquantity*pri__销售金额FROMOrderDetailGROUPBYproductNoORDERBYsumquantity*pri__19查找销售金额最大的客户名称和总货款SELECTcustomerNamesumorderSumFROMOrder__steraCustomerbWHEREa.customerNo=b.customerNoGROUPBYa.customerNocustomerNameH__INGsumorderSum=SELECT__xorderSumFROMSELECTcustomerNosumorderSumorderSumFROMOrder__sterGROUPBYcustomerNoc20查找至少销售了3种商品的客户编号、客户名称、商品编号、商品名称、数量和金额SELECTa.CustomerNoCustomerNameb.ProductNoProductNamequantitysumquantity*pri__sumFROMCustomeraProductbOrder__stercOrderDetaildWHEREa.CustomerNo=c.CustomerNoandc.orderNo=d.orderNoandb.ProductNo=d.ProductNoandEXISTSSELECTCustomerNoFROMOrder__stereOrderDetailfWHEREe.orderNo=f.orderNoanda.customerNo=e.customerNoGROUPBYCustomerNoH__INGcountdistinctProductNo=3GROUPBYa.CustomerNoCustomerNameb.ProductNoProductNamequantityORDERBYa.CustomerNosumDESC21找出目前业绩超过232000元的员工编号和姓名SELECTemployeeNamesumOrderFROMEmployeeaSELECTsalerNosumorderSumsumOrderFROMOrder__sterGROUPBYsalerNobWHEREa.employeeNo=b.salerNoANDsumOrder23200022找出目前销售业绩超过40000元的业务员编号及销售业绩,并按销售业绩从大到小排序SELECTemployeeNosumOrderFROMEmployeeaSELECTsalerNosumorderSumsumOrderFROMOrder__sterGROUPBYsalerNobWHEREa.employeeNo=b.salerNoANDsumOrder40000ORDERBYsumOrderDESC23求出每位客户的总订购金额,显示出客户号及总订购金额,并按总订购金额降序排列SELECTcustomerNosumorderSumFROMOrder__sterGROUPBYcustomerNoORDERBYsumorderSumDESC24求每位客户订购的每种商品的总数量及平均单价,并按客户号、商品号从小到大排列SELECTcustomerNoproductNosumquantityquantityssumquantity*pri__/sumquantity__gpri__FROMOrder__steraOrderDetailbWHEREa.orderNo=b.orderNoGROUPBYcustomerNoproductNoORDERBYcustomerNoproductNo25查询业绩最好的的业务员号、业务员名及其总销售金额SELECTtop1salerNoemployeeNamesumquantity*pri__FROMEmployeeaOrder__sterxOrderDetailyWHEREx.orderNo=y.orderNoanda.employeeNo=x.salerNoGROUPBYsalerNoemployeeNameORDERBYsumquantity*pri__DESC或SELECTsalerNoemployeeNamesumorderSumFROMEmployeeaOrder__sterbWHEREa.employeeNo=b.salerNoGROUPBYsalerNoemployeeNameh__ingsumorderSum=select__xorderSumfromselectsumorderSumorderSumfromOrder__stergroupbysalerNox26查询订购的商品至少包含了订单“200803010001”中所订购商品的订单SELECT*FROMOrder__steraWHEREnotexistsselect*fromOrderDetailywhereorderNo=200803010001andnotexistsselect*fromOrderDetailzwherey.productNo=z.productNoanda.orderNo=z.orderNo27求每种商品的总销售数量及总销售金额,要求显示出商品编号、商品名称、总数量及总金额,并按商品号从小到大排列SELECTa.productNo商品编号productName商品名称qtySum总数量totalSum总金额FROMProductaSELECTproductNosumquantityqtySumsumquantity*pri__totalSumFROMOrderDetailGROUPBYproductNobWHEREa.productNo=b.productNoORDERBYa.productNo28查询总订购金额超过“C20070002”客户的总订购金额的客户号、客户名及其住址SELECTa.customerNocustomerNameaddressFROMOrder__steraCustomerbWHEREa.customerNo=b.customerNoGROUPBYa.customerNocustomerNameaddressH__INGsumorderSum=SELECTsumorderSumFROMOrder__sterWHEREcustomerNo=C20070002GROUPBYcustomerNo29查询销售金额最高的销售员编号、订单编号、订单日期和订单金额SELECTtop1salerNob.orderNoorderDateorderSumFROMEmployeeaOrder__sterbOrderDetailcWHEREb.orderNo=c.orderNoanda.employeeNo=b.salerNoGROUPBYsalerNob.orderNoorderDateorderSumORDERBYorderSumDESC或SELECTsalerNob.orderNoorderDateorderSumFROMEmployeeaOrder__sterbWHEREa.employeeNo=b.salerNoandorderSum=select__xorderSumfromOrder__ster30实验问题
①存在量词与__运算in、连接运算和全称量词之间的关系如何?它们可以互相替换吗?给出你的理由答存在量词EXISTS可以用连接运算或__运算IN来实现,而SQL中没有全称量词,只能用存在量词和取非运算来实现;
②给出SQL语句实现分组聚集操作的执行过程答1,首先执行FROM语句,查找到各表数据2,其次执行WHERE语句,对数据进行筛选以及表与表的连接3,然后执行GROUPBY语句,将数据划分组4,使用聚集函数进行计算5,使用H__ING语句进行筛选分组
③请写出例
3.55的执行过程
1..将Score表的数据以studentNo进行分组
2.对每组执行__g(score)和count*运算
3.计算最大的__g(score)
3.筛选出count大于5并且平均值等于最大的__g(score)的组
5.将满足条件的组输出
④存在量词一般用在相关子查询中,请分别给出存在量词用在相关子查询和非相关子查询的查询例子相关子查询SELECTstudentNameclassNoFROMStudentxWHEREEXISTSSELECT*FROMScoreaCoursebWHEREa.courseNo=b.courseNoANDa.studentNo=x.studentNoANDcourseName=’操作系统’)非相关子查询SELECTstudentNoclassNoFROMStudentWHERENOTEXISTSSELECT*FROMStudentWHEREstudentName=‘王红’
⑤WHERE和H__ING子句都是用于指定查询条件的,请给出你对这两个子句的理解,用实例说明WHERE子句作用于整个查询对象,对元组进行过滤,不可以和函数一起用H__ING子句仅作用于分组,对分组进行过滤必须与GROUPBY配合使用举例WHERE1查询所有业务部门的员工姓名、职称、薪水selectemployeeNameheadShipsalaryfromemployeewheredepartment=业务科H__ING查询最高分在80以上的每个同学的平均分和最高分SELECTstudentNo__gscore平均分__xscore最高分FROMScoreGROUPBYstudentNoH__ING__xscore=80
⑥在分组聚集操作中,___在查询列中,除了集聚函数运算,其它表达式必须包含在GROUPBY子句中如果查询列除集聚函数外的表达式不包含在GROUPBY子句中,则聚合没有意义,如在订单数据库中,查询每个客户的客户编号、订单编号和订单总额SelectcustomerNoorderNosumorderSumFromOrder__sterGroupbycustomerNo该语句其语义不明确,因为一个客户有多张订单,按客户分组求和,意味着求该客户的总订单金额,而在查询列中还包含了订单编号,这个总金额应该放在那张订单中?这是一个问题
⑦分析SQL语句中的in和or关键字有何异同点?它们可以互换吗?给出实例说明in可用于__查询,也可用于嵌套子查询中or则为逻辑查询,逻辑或当in用于__查询时,in和or之间可以相互转换;当in用于嵌套子查询时,则不可以相互转换举例用IN来实现SELECTstudentNocourseNoscoreFROMScoreWHEREcourseNoIN‘001’’005’’003’用OR来实现SELECTstudentNocourseNoFROMScoreWHEREcourseNo=’001’ORcourseNo=’005’ORcourseNo=’003’但是当IN用于子查询时,此时IN不能和OR互换举例SELECTstudentNameFROMStudentWHEREStudent.studentNoINSELECTScore.studentNoFROMScore此时只能用IN。