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

admin2019-07-07  16

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

选项

答案第一空:RETURNS 第二空:table 第三空:SELECT a.商品号,SUM(销售数量*(销售单价一进货单价)) AS总利润 FROM 销售表 a JOIN 商品表 b ON a.商品号 =b.商品号 WHERE a.商品号 IN (SELECT 商品号 FROM 商品表 WHERE 类别=@1b) 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
RFTURN
END
[;]
<table_type_definitions>::=
({<column_definition> <column_constraint>
|<computed_column_definition>}
[<table_constraint>][,…n]
)
题目要求返回指定类别下的每种商品在2012年的销售总利润,并且将结果按照销售总利润的降序输出。采用复合SQL语句的格式,先查出指定类别的所有商品号:SELECT 商品号 FROM 商品表 WHERE 类别 =@1b,其中@1b为函数的传入参数,然后在销售表中用GROUP BY对商品号进行分组,并采用SUM计算每个分组的总和。
转载请注明原文地址:https://jikaoti.com/ti/zn37FFFM
0

最新回复(0)