sql实验二:使用分组,排序,汇总

 

Code:
  1. --1.显示以‘S’开头,并且玩具名称不少于7个字符的玩具名称vToyName。  
  2. select *   
  3. from dbo.Toys  
  4. where len(vToyName)>=7 and left(vToyName,1)='S'  
  5.   
  6. --2.显示名称里包含字母‘u’或‘x’的玩具ID和名称以及价格。  
  7. select cToyId,vToyName,mToyRate  
  8. from dbo.Toys  
  9. where CHARINDEX('x',vToyName)<>0   
  10.     and CHARINDEX('u',vToyName)<>0  
  11.   
  12. --3.查询信用卡号(cCreditCardNo)中包含4个8的订购者(Shopper)的详细信息。  
  13. select *  
  14. from shopper  
  15. where cCreditCardNo like '%8%8%8%8%'  
  16.   
  17. --4.统计订单号为‘000001’的订单订购的玩具的数量和玩具的总花费(mToyCost)。  
  18. select cOrderNo,'数量'=sum(siQty),'花费'=sum(mToyCost)  
  19. from dbo.OrderDetail  
  20. where cOrderNo='000001'  
  21. group by cOrderNo  
  22.   
  23.   
  24. --5.统计每份订单订购的玩具数量和玩具花费。  
  25. select cOrderNo,'数量'=sum(siQty),'花费'=sum(mToyCost)  
  26. from dbo.OrderDetail  
  27. group by cOrderNo  
  28.   
  29. --6.对于GlobalToyz数据库的Country表,统计国家名称只由六个字母构成的国家的数目。  
  30. select count(*)  
  31. from Country  
  32. where len(cCountry)=6  
  33.   
  34. --7.显示价格最高的五种玩具的名称和价格(vToyName,mToyRate)。  
  35. select top 5 vToyName,mToyRate  
  36. from Toys  
  37. order by mToyRate desc  
  38.   
  39. --8.输出Shopper表的‘Texas’州的前10%的订购者的详细信息。  
  40. select top 10 percent *  
  41. from Shopper  
  42. where cState='Texas'  
  43.   
  44. --9.统计被人订购过的玩具的数量,相同的玩具只统计一次。(OrderDetail表)  
  45. select cToyID,'数量'=sum(siQty)  
  46. from OrderDetail   
  47. group by cToyID  
  48. order by cToyID  
  49.   
  50. --10.toys表中,按照玩具的类别(cCategoryId)统计每类玩具的数量和平均价格  
  51. --  (mToyrate),只输出平均价格大于20$的玩具的信息。思考:能输出的列可以  
  52. --   有哪些?请写出相应的查询。  
  53. select cCategoryID,'数量'=sum(siToyQoh),'平均价格'=avg(mToyRate)  
  54. from Toys  
  55. group by cCategoryID  
  56. having avg(mToyRate)>20  
  57.   
  58.   
  59. --11.对于PickofMonth表,打印出该表的详细信息,并在底部汇总出‘2000’年销售数量  
  60. --   的总和。  
  61. select *  
  62. from PickofMonth  
  63. where iYear=2000  
  64.   
  65. select convert(char,iYear)+'年的销售数量总和'+
  66.         convert(char,sum(iTotalSold))  
  67. from PickofMonth  
  68. where iYear=2000  
  69. group by iYear  
  70.   
  71. --12.对于OrderDetail表,请输出订单号,cWrapperId,vMessage和mToyCost,并  
  72. --   根据cWrapperId小计玩具花销的平均值和总值,在底部总计玩具花销的平均值  
  73. --   和总值。  
  74. select cOrderNo,cWrapperId,vMessage,mToyCost  
  75. from OrderDetail  
  76. order by cWrapperId  
  77. compute avg(mToyCost),sum(mToyCost) by cWrapperId  
  78. compute avg(mToyCost),sum(mToyCost)  
  79.   
  80. --13.打印出玩具花费最高的三份订单的详情。  
  81. select *  
  82. from orderDetail  
  83. where cOrderNo in (select top 3 cOrderNo  
  84.                     from orders  
  85.                     order by mTotalCost desc)  
  86.   
  87. --14.以下这段代码将会输出什么:请写出正确的语句。  
  88. --   A:输出订单分组中再按玩具ID分组的消费情况  
  89. SELECT cOrderNo,cToyId,'消费量'=SUM(mToyCost)  
  90. FROM OrderDetail  
  91. GROUP BY cOrderNo,cToyId  
  92.   
  93. --15.下面包含COMPUTE BY子句的代码都会产生错误,请写出产生错误的原因,
  94. --    并将其改为正确的带COMPUTE BY子句的SQL语句。  
  95. SELECT cToyId,mToyCost   
  96. FROM OrderDetail   
  97. order by cToyID--小计前必须添加order by  
  98. COMPUTE SUM(mToyCost) BY cToyId  
  99.   
  100. SELECT cCartId ,mTotalCost--添加mTotalCost要小计就要先引入此列  
  101. FROM Orders   
  102. ORDER BY cCartId   
  103. COMPUTE count(mTotalCost),AVG(mTotalCost) BY cCartId  

 

你可能感兴趣的:(sql实验二:使用分组,排序,汇总)