设在SQL Server 2008某数据库中有商品表和销售表,两个表的定义如下: CREATE TABLE商品表( 商品号char(10)PRIMARY KEY, 商品名varehar(40), 类别varchar(20), 进货单价i

admin2016-04-27  26

问题 设在SQL Server 2008某数据库中有商品表和销售表,两个表的定义如下:
  CREATE TABLE商品表(
  商品号char(10)PRIMARY KEY,
  商品名varehar(40),
  类别varchar(20),
  进货单价int)
  CREATE TABLE销售表(
  商品号char(10),
  销售时间datetime,
  销售数量int,
  销售单价int,
  PRIMARY KEY(商品号,销售时间))
  下面是一个用户定义的多语句表值函数,它接受类别作为输入参数,返回该类别下的每种商品在2012年的销售总利润,并将结果按照销售总利润的降序输出。请补全该函数定义代码。
  CREATE FUNCTION f_Profit(@lb char(10))_______@ProfitTable_______(
  商品号char(10),
  总利润int)
  AS
  BEGIN
  INSERT INT@ProfitTable
_______
  _______
  END

选项

答案第一空:RETURNS 第二空:table 第三空:SELECT a.商品号,SUM(销售数量,Ic(销售单价一进货单价))AS总利润FROM销售表a JOIN商品表b ON a.商品号=b.商品号WHERE a.商品号IN(SELECT商品号FROM商品表WHERE类别=@lb)GROUP BY a.商品号ORDER BY总利润DESC 第四空:RETURN@ProfitTable

解析 用户定义的多语句表值函数的命令格式为:
    CREATE FUNCTION[schema_name.]function name
   ([{@parameter_name[AS][type_schema_name.]parameter_data_type
    [=default]}
    [,…n]
    ]
      )
    RETURNS@return_variable TABLE<table_type_definition>
    [WITH<function option>[[,]…n]]
    [AS]
    BEGIN
    function_body
    RETURN
    END
    [;]
    ::=
    ({
    I}
    [][,…n]
    )
    题目要求返回指定类别下的每种商品在2012年的销售总利润,并且将结果按照销售总利润的降序输出。采用复合SQL语句的格式,先查出指定类别的所有商品号:SELECT商品号FROM商品表WHERE类别=@lb,其中@lb为函数的传人参数,然后在销售表中用GROUP BY对商品号进行分组,并采用SUM计算每个分组的总和。
转载请注明原文地址:https://jikaoti.com/ti/wX37FFFM
0

最新回复(0)