下面是创建订单关系的SQL语句,订单编号唯一识别一个订单,用户名为订购图书的会员用户名,且不能为空。要求订购日期不能大于出货日期。请将空缺部分补充完整。 CREATE TABLE 订单( 订单编号 CHAR(6) (a) 用户名V

admin2010-04-08  75

问题 下面是创建订单关系的SQL语句,订单编号唯一识别一个订单,用户名为订购图书的会员用户名,且不能为空。要求订购日期不能大于出货日期。请将空缺部分补充完整。
   CREATE TABLE 订单(
   订单编号  CHAR(6)  (a)  
   用户名VARCHAR(40)NOT NULL  (b),
   销售额FLOAT,
   订购日期DATE NOT NULL,
   出货日期DATE  (c));
请完成下列查询的SQL语句。
   (1)查询名称中包含“数据库”的图书的图书名称,作者,出版社和出版日期。
   SELECT  (d)  
   FROM 图书
   WHERE 图书名称  (e);
   (2)查询提供销售(图书表中有)但没有销售过(没在订单明细表中出现)的图书名称和出版社。
          SELECT 图书名称,出版社
          FROM 图书
          WHERE NOT EXISTS (
   SELECT  (f)  
   FROM 订单明细
   WHERE  (g));
   (3)查询订购图书数量最多的会员名及其订购的数量。
   SELECT 用户名,  (h)  
   FROM订单,订单明细
   WHERE  (i)  
   GROUP BY 用户名
      HAVING  (j)  
          (SELECT SUM (数量)
          FROM 订单,订单明细
          WHERE 订单.订单编号=订单明细.订单编号
          GROUP BY 用户名);
   (4)为了统计会员的购买行为信息,实施有意义的客户关怀策略,查询会员的平均订购间隔时间,考虑多次购买图书和一次购买图书的情况(其中,DATEDIFF函数表示两个日期之间的天数)。
   SELECT 用户名,CASE WHEN  (k)  
   THEN DATEDIFF (MAX (订购日期),MIN (订购日期)) /  (1)  
          ELSE DATEDIFF(CURRENT_TIMESTAMP,MIN(订购日期))
          END AS AVG GAP
   FROM 订单
     (m);

选项

答案(1)(d)图书名称,作者,出版社,出版日期 (e)LIKE’%数据库%’ (2)(f)* (g)图书.图书编号=订单明细.图书编号 (3)(h)SUM(数量) (i)订单.订单编号=订单明细.订单编号 (j) SUM(数量)>=ALL (4)(k)COUNT(*)>1 (l)(COUNT(*)-1或COUNT(*)也给分 (m)GROUP BY 用户名

解析 本题考查查询语句SELECT的语法,查询是SQL的重要内容。
   (1)考查基本的SQL查询语法,SELECT后是要查询的属性,查询条件是包含“数据库”的图书,因此用LIKE关键字。
   (2)考查NOTEXISTS语法,(f)处填*。该查询为相关查询,因此(g)处的条件为图书.图书编号=订单明细.图书编号。
   (3)考查较复杂的嵌套查询、分组查询和ALL关键字。子查询得到所有会员的订购数,题目要求查询订购数最多的会员名和订购数,因此(j)的答案为SUM(数量)>=ALL。
   (4)考查分组查询、聚集函数和CASE语法。平均订购间隔时间对一次购买和多次购买的会员有不同的计算方式,对一次购买的会员,平均订购时间为当前时间—订购时间;而对于多次购买的会员,平均订购时间为(最晚的订购时间—最早的订购时间)/间隔数,间隔数为订购数-1。
转载请注明原文地址:https://jikaoti.com/ti/xPN7FFFM
0

相关试题推荐
最新回复(0)