and l_commitdate < l_receiptdate
) group by
o_orderpriority order by
o_orderpriority; 2.7.3 替换参数
下面的替换参数的值必须被产生以用来形成可执行查询文本:
1. DATE是在1993年1月和1997年10月之间随机选择的一个月的第一天。 2.7.4 查询确认
确认查询执行时必须使用下面的替换参数值,而且必须产生下面的输出数据: 替换参数值:
1. DATE = 1993-07-01. 查询确认的输出数据:
2.8当地供应者数量查询(Q5)
这个查询列出通过本地供应者获得的收入大小。 2.8.1 商业问题
当地供应者数量查询给出某一国家的某一地区的收入,这些收入是通过那些定购零件的顾客和供应零件的供应者都在那个国家的交易获得的。运行这个查询是为了决定在给定的区域是否需要建立一个当地分配中心。这个查询仅仅考虑在给定的一年中定购的零件。这个查询按照收入的降序显示出国家和收入大小。某一国家的收入大小被定义为sum(l_extendedprice * (1 -l_discount))。 2.8.2 查询函数定义 select
n_name,
sum(l_extendedprice * (1 - l_discount)) as revenue from
customer,orders,lineitem,supplier,nation,region where
c_custkey = o_custkey
and l_orderkey = o_orderkey
26
and l_suppkey = s_suppkey and c_nationkey = s_nationkey and s_nationkey = n_nationkey and n_regionkey = r_regionkey and r_name = '[REGION]'
and o_orderdate >= date '[DATE]'
and o_orderdate < date '[DATE]' + interval '1' year group by
n_name order by
revenue desc; 2.8.3 替换参数
下面的替换参数的值必须被产生以用来形成可执行查询文本: 1.REGION在4.2.3节中为R_NAME定义的值的列表中随机选择; 2.DATE是从1993年到1997年中随机选择的一年的1月1日。 2.8.4 查询确认
确认查询执行时必须使用下面的替换参数值,而且必须产生下面的输出数据: 替换参数值:
1. REGION = ASIA; 2. DATE = 1994-01-01. 查询确认的输出数据:
2.9预测收入变化查询(Q6)
这个查询确定收入增加的数量,这些增加的收入是在给定的一年中在指定的百分比范围内消除了折扣产生的。这类”what if”查询可以被用来寻找增加收入的途径。 2.9.1 商业问题
预测收入变化查询考虑了指定的一年中折扣在DISCOUNT-0.01和DISCOUNT+0.01之间的已运送的所有订单。查询列出了把l_quantity小于quantity的订单的折扣消除之后总收入增加的数量。潜在的收入增加量等于具有合理的折扣和数量的订单的[l_extendedprice * l_discount]的总和。 2.9.2 查询函数定义 select
sum(l_extendedprice*l_discount) as revenue from
27
lineitem where
l_shipdate >= date '[DATE]'
and l_shipdate < date '[DATE]' + interval '1' year
and l_discount between [DISCOUNT] - 0.01 and [DISCOUNT] + 0.01 and l_quantity < [QUANTITY]; 2.9.3 替换参数
下面的替换参数的值必须被产生以用来形成可执行查询文本: 1. DATE是从[1993, 1997]中随机选择的一年的1月1日; 2. DISCOUNT在区间[0.02, 0.09]中随机选择; 3. QUANTITY在区间[24, 25]中随机选择。 2.9.4 查询确认
确认查询执行时必须使用下面的替换参数值,而且必须产生下面的输出数据: 替换参数值:
1. DATE = 1994-01-01; 2. DISCOUNT = 0.06; 3. QUANTITY = 24. 查询确认的输出数据:
2.10货运量查询(Q7)
此查询确定在两国之间货运商品的量以帮助重新谈判货运合同。 2.10.1商业问题
此查询得到在1995年和1996年间,零件从一国供应商被运送给另一国的顾客,两国货运项目总的折扣收入。查询结果列出供应商国家,顾客国家,年度,那一年的货运收入,并按供应商国家,顾客国家和年度升序排列。 2.10.2查询函数定义 select
supp_nation, cust_nation,
l_year, sum(volume) as revenue from (
select
n1.n_name as supp_nation, n2.n_name as cust_nation,
extract(year from l_shipdate) as l_year, l_extendedprice * (1 - l_discount) as volume from
supplier,lineitem,orders,customer,nation n1,nation n2 where
s_suppkey = l_suppkey
28
and o_orderkey = l_orderkey and c_custkey = o_custkey
and s_nationkey = n1.n_nationkey and c_nationkey = n2.n_nationkey and (
(n1.n_name = '[NATION1]' and n2.n_name = '[NATION2]') or (n1.n_name = '[NATION2]' and n2.n_name = '[NATION1]') )
and l_shipdate between date '1995-01-01' and date '1996-12-31' ) as shipping group by
supp_nation, cust_nation, l_year order by
supp_nation, cust_nation, l_year;
2.10.3替代函数
下面的替代参数的值必须被产生和用来建立可执行查询文本: 1. NATION1 是在条款4.2.3中定义N_NAME值的列表中的任意值;
2. NATION2 是在条款4.2.3中定义N_NAME值的列表中的任意值,且必须和条1中
NATION1的值不同。
2.10.4查询确认
为了确认数据库资格,查询必须用以下值来作为替代参数,且必须产生以下的输出数据: 替代参数的值:
1. NATION1=FRANCE; 2. NATION2=GERMANY。 查询确认输出数据:
2.11国家市场份额查询(Q8)
此查询显示在过去的两年中,一个给定零件类型在某国某地区市场份额改变了多少。 2.11.1商业问题
某国某地区的市场份额定义为某国某地区供应商供应的特定种类的产品收入的百分比,是[l_extendedprice *(1-ldiscount)]的和。这个查询决定1995年和1996年的市场份额。 2.11.2查询函数定义 select
o_year,
29
sum(case
when nation = '[NATION]' then volume else 0
end) / sum(volume) as mkt_share
from
(select
extract(year from o_orderdate) as o_year, l_extendedprice * (1-l_discount) as volume, n2.n_name as nation from
part,supplier,lineitem,orders,customer,nation n1,nation n2,region where
p_partkey = l_partkey and s_suppkey = l_suppkey and l_orderkey = o_orderkey and o_custkey = c_custkey
and c_nationkey = n1.n_nationkey and n1.n_regionkey = r_regionkey and r_name = '[REGION]'
and s_nationkey = n2.n_nationkey
and o_orderdate between date '1995-01-01' and date '1996-12-31' and p_type = '[TYPE]' ) as all_nations group by
o_year order by
o_year;
2.11.3替代参数
下面的替代参数的值必须被产生和用来建立可执行查询文本: 1. NATION是在条款4.2.3中定义N_NAME的值的列表中的任意值。
2. REGION是在条款4.2.3中为R_NAME定义的值,R_RGIONKEY和N_REGIONKEY在那里为选
中的条1的NATION协调。
3. TYPE是在条款4.2.2.12中定义类型的三音节字符串列表中的任意值。 2.11.4查询确认
为了确认数据库资格,查询必须用以下值来作为替代参数,且必须产生以下的输出数据: 替代参数的值:
1. NATION=BRAZIL; 2. REGION=AMERICA;
3. TYPE=ECONOMY ANODIZED STEEL 查询确认输出数据:
30