第 1 頁:單選題 |
第 4 頁:應用題 |
第 5 頁:設計與應用題 |
47設在SQL Server 2008某數(shù)據(jù)庫中有商品表和銷售表,兩個表的定義如下:
CREATE TABLE商品表(
商品號char(10)PRIMARY KEY,
商品名varchar(40),
類別varchar(20),
進貨單價int)
CREATE TABLE銷售表(
商品號char(10),
銷售時間datetime,
銷售數(shù)量int,
銷售單價int,
PRIMARY KEY(商品號,銷售時問))
下面是一個用戶定義的多語句表值函數(shù),它接受類別作為輸入?yún)?shù),返回該類別下的每種商品在2012年的銷售總利潤,并將結(jié)果按照銷售總利潤的降序輸出。請補全該函數(shù)定義代碼。(10分)
CREATE FUNCTION f_Profit(@lb char(10))【1】@ProfitTable【2】(
商品號char(10),
總利潤int)
AS
BEGIN
INSERT INTO@ProfitTable
【3】
【4】
END
參考解析:
【解題思路】
用戶定義的多語句表值函數(shù)的命令格式為:
CREATE FUNCTION[schema_name.]function name
([{@parameter_name[AS][type_schema_name.]parameter_data_type
[=default]}
[….n]
]
)
RETURNS@return_variable TABLE
[WITH[[,]…n]]
[AS]
BEGIN
function_body
RETURN
END
[;]
。海=
({
J}
[][,…n]
)
題目要求返回指定類別下的每種商品在2012年的銷售總利潤,并且將結(jié)果按照銷售總利潤的降序輸出。采用復合SQL語句的格式,先查出指定類別的所有商品號:SELECT商品號FROM商品表WHERE類別=@lb,其中@lb為函數(shù)的傳人參數(shù),然后在銷售表中用GROUP BY對商品號進行分組,并采用SUM計算每個分組的總和。
【參考答案】
第一空:RETURNS
第一空:table
第三空:SELECT a.商品號,SUM(銷售數(shù)量*(銷售單價一進貨單價))AS總利潤FROM銷售表a JOIN商品表b ON a.商品號=b.商品號WHERE a.商品號IN(SELECT商品號FROM商品表WHERE類別=@lb)GROUP BY a.商品號0RDER BY總利潤DESC
第四空:RETURN@ProfitTable
相關(guān)推薦:
2015計算機三級《數(shù)據(jù)庫》上機試題及答案匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |