Q01 统计查询

Q02 WHERE条件中,使用子查询(=)

Q03 多表关联统计查询,并统计(SUM)

Q04 WHERE条件中,使用子查询(EXISTS),并统计(COUNT)

Q05 多表关联查询(=),并统计(SUM)

Q06 条件(BETWEEN AND)查询,并统计(SUM)

Q07 带有FROM子查询,从结果集中统计(SUM)

Q08 带有FROM多表(zi查询),从结果集中的查询列上带有逻辑判断(WHEN THEN ELSE)的统计(SUM)

Q09 带有FROM多表(zi查询),查询表中使用函数(EXTRACT),从结果集中统计(SUM)

Q10 多表条件查询(>=, <),并统计(SUM)

Q11 在GROUP BY中使用比较条件(HAVING >),比较值从子查询中查出

Q12 带有逻辑判断(WHEN AND/ WHEN OR)的查询,并统计(SUM)

Q13 带有FROM子查询,子查询中使用外联结

Q14 使用逻辑判断(WHEN ELSE)的查询

Q15 使用视图和表关联查询

Q16 在WHERE子句中使用子查询,使用IN/ NOT IN判断条件,并统计(COUNT)

Q17 在WHERE子句中使用子查询,使用<比较,使用了AVG函数

Q18 在WHERE子句中使用IN条件从子查询结果中比较

Q19 多条件比较查询

Q20 WHERE条件子查询(三层)

Q21 在WHERE条件中使用子查询,使用EXISTS和NOT EXISTS判断

Q22 在WHERE条件中使用判断子查询、IN、NOT EXISTS,并统计(SUM、COUNT)查询结果

价格摘要报告查询(Q1)

这个查询报告已经付款的、已运送的和返回的生意的数量。

商业问题

价格摘要报告查询提供了给定日期的运送的所有行的价格摘要报告,这个日期在数据库包含的最大的运送日期的60-120天以内。查询列出了扩展价格、打折的扩展价格、打折的扩展价格加税收、平均数量、平均扩展价格和平均折扣的总和。这些统计值根据RETURNFLAG 和LINESTATUS进行分组,并按照RETURNFLAG 和LINESTATUS的升序排列。每一组都给出所包含的行数。

查询函数定义

select

l_returnflag,

l_linestatus,

sum(l_quantity) as sum_qty,

sum(l_extendedprice) as sum_base_price,

sum(l_extendedprice*(1-l_discount)) as sum_disc_price,

sum(l_extendedprice*(1-l_discount)*(1+l_tax)) as sum_charge,

avg(l_quantity) as avg_qty,

avg(l_extendedprice) as avg_price,

avg(l_discount) as avg_disc,

count(*) as count_order

from

lineitem

where

l_shipdate <= date '1998-12-01' - interval '[DELTA]' day (3)

group by

l_returnflag,

l_linestatus

order by

l_returnflag,

l_linestatus;

替代参数

DELTA在区间[60, 120]内随机选择。

注释:1998-12-01是数据库中定义的最大的最可能的运送日期。这个查询将包括这个日期减去DELTA天得到的日期之前的所有被运送的行。目的是选择DELTA的值以便表中95%到97%的行被扫描。

最小代价供应者查询(Q2)

这个查询给出在给定的区域内,对于指定的零件,应该选择哪个供应者来订货。

商业问题

最小代价供应者查询给出这一答案:在给定的区域内,对于某一类型和大小的零件,哪个供应者能以最低的价格供应它。如果那一区域的几个供应者以同样的价格供应所要求的零件,查询列出帐户余额在前100位的供应者。对于每一个供应者,查询列出供应者的帐户余额、名字和国家,零件的号码和生产者,供应者的地址、电话号码和备注信息。

查询函数定义

返回前100行

SELECT

s_acctbal,

s_name,

n_name,

p_partkey,

p_mfgr,

s_address,

s_phone,

s_comment

FROM

part,

supplier,

partsupp,

nation,

region

WHERE

p_partkey = ps_partkey

AND s_suppkey = ps_suppkey

AND p_size = [ SIZE ]

AND p_type LIKE '%[TYPE]'

AND s_nationkey = n_nationkey

AND n_regionkey = r_regionkey

AND r_name = '[REGION]'

AND ps_supplycost = (

SELECT

MIN (ps_supplycost)

FROM

partsupp,

supplier,

nation,

region

WHERE

p_partkey = ps_partkey

AND s_suppkey = ps_suppkey

AND s_nationkey = n_nationkey

AND n_regionkey = r_regionkey

AND r_name = '[REGION]'

)

ORDER BY

s_acctbal DESC,

n_name,

s_name,

p_partkey;

替代参数

SIZE在区间[1, 50]内随机选择;

TYPE列表Syllable 3 中随机选择;

REGION在R_NAME定义的值的列表中随机选择。

e.g:

1. SIZE = 15;

2. TYPE = BRASS;

3. REGION = EUROPE.

运送优先权查询(Q3)

查询给出收入在前10位的尚未运送的订单。

商业问题

运送优先权查询给出在指定的日期之前尚未运送的订单中具有最大收入的订单的优先权和潜在的收入,潜在的收入被定义为l_extendedprice * (1-l_discount)的和。订单按照收入的降序列出。如果尚未运送的订单超过10个,只有收入在前10位的订单被列出。

查询函数定义

SELECT

l_orderkey,

SUM (

l_extendedprice * (1 - l_discount)

) AS revenue,

o_orderdate,

o_shippriority

FROM

customer,

orders,

lineitem

c_mktsegment = '[SEGMENT]'

AND c_custkey = o_custkey

AND l_orderkey = o_orderkey

AND o_orderdate < DATE '[DATE]'

AND l_shipdate > DATE '[DATE]'

GROUP BY

l_orderkey,

o_orderdate,

o_shippriority

ORDER BY

revenue DESC,

o_orderdate;

替代参数

1. SEGNENT在Segment定义的值的列表中随机选择;

2. 日期在[1995-03-01, 1995-03-31]中随机选择。

订单优先权检查查询(Q4)

这个查询可以让我们了解订单优先权系统工作得如何,并给出顾客满意度的一个估计值。

商业问题

订单优先权检查查询计算给定的某一年的某一季度的订单的数量,在每个订单中至少有一行由顾客在它的提交日期之后收到。查询按照优先权的升序列出每一优先权的订单的数量。

查询函数定义

SELECT

o_orderpriority,

COUNT (*) AS order_count

FROM

orders

WHERE

o_orderdate >= DATE '[DATE]'

AND o_orderdate < DATE '[DATE]' + INTERVAL '3' MONTH

AND EXISTS (

SELECT

*

FROM

lineitem

WHERE

l_orderkey = o_orderkey

AND l_commitdate < l_receiptdate

)

GROUP BY

o_orderpriority

ORDER BY

o_orderpriority;

替代参数

DATE是在1993年1月和1997年10月之间随机选择的一个月的第一天。

当地供应者数量查询(Q5)

这个查询列出通过本地供应者获得的收入大小。

商业问题

当地供应者数量查询给出某一国家的某一地区的收入,这些收入是通过那些定购零件的顾客和供应零件的供应者都在那个国家的交易获得的。运行这个查询是为了决定在给定的区域是否需要建立一个当地分配中心。这个查询仅仅考虑在给定的一年中定购的零件。这个查询按照收入的降序显示出国家和收入大小。某一国家的收入大小被定义为sum(l_extendedprice * (1 -l_discount))。

查询函数定义

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

and l_suppkey = s_suppkey

and c_nationkey = s_nationkey

and s_nationkey = n_nationkey

and n_regionkey = r_regionkey

and r_name = ':1'

and o_orderdate >= date ':2'

and o_orderdate < date ':2' + interval '1' year

group by

n_name

order by

revenue desc;

替代参数

REGION在为R_NAME定义的值的列表中随机选择;

DATE是从1993年到1997年中随机选择的一年的1月1日。

e.g:

REGION = ASIA;

DATE = 1994-01-01

预测收入变化查询(Q6)

这个查询确定收入增加的数量,这些增加的收入是在给定的一年中在指定的百分比范围内消除了折扣产生的。这类”what if”查询可以被用来寻找增加收入的途径。

商业问题

预测收入变化查询考虑了指定的一年中折扣在DISCOUNT-0.01和DISCOUNT+0.01之间的已运送的所有订单。查询列出了把l_quantity小于quantity的订单的折扣消除之后总收入增加的数量。潜在的收入增加量等于具有合理的折扣和数量的订单的[l_extendedprice * l_discount]的总和。

查询函数定义

select

sum(l_extendedprice*l_discount) as revenue

from

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];

替代参数

1. DATE是从[1993, 1997]中随机选择的一年的1月1日;

2. DISCOUNT在区间[0.02, 0.09]中随机选择;

3. QUANTITY在区间[24, 25]中随机选择。

e.g

1. DATE = 1994-01-01;

2. DISCOUNT = 0.06;

3. QUANTITY = 24

货运量查询(Q7)

此查询确定在两国之间货运商品的量以帮助重新谈判货运合同。

商业问题

此查询得到在1995年和1996年间,零件从一国供应商被运送给另一国的顾客,两国货运项目总的折扣收入。查询结果列出供应商国家,顾客国家,年度,那一年的货运收入,并按供应商国家,顾客国家和年度升序排列。

查询函数定义

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

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;

替代函数

1. NATION1 是在N¬_NAME值的列表中的任意值;

2. NATION2 是在N¬_NAME值的列表中的任意值,且必须和条1中NATION1的值不同。

e.g

NATION1=FRANCE;

NATION2=GERMANY。

国家市场份额查询(Q8)

此查询显示在过去的两年中,一个给定零件类型在某国某地区市场份额改变了多少。

商业问题

某国某地区的市场份额定义为某国某地区供应商供应的特定种类的产品收入的百分比,是[l_extendedprice *(1-ldiscount)]的和。这个查询决定1995年和1996年的市场份额。

查询函数定义

select

o_year,

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;

替代参数

1. NATION是在N_NAME的值的列表中的任意值。

2. REGION是在R_NAME定义的值,R_RGIONKEY和N_REGIONKEY在那里为选中的条1的NATION协调。

3. TYPE是在三音节字符串列表中的任意值。

e.g :

1. NATION=BRAZIL;

2. REGION=AMERICA;

3. TYPE=ECONOMY ANODIZED STEEL

产品类型利润估量查询(Q9)

此查询决定一个给定零件在一个国家和年度的利润。

商业问题

此查询得出每个国家每一年所有被定购的零件在那一年中利润。利润定义为在特别行所有被描述零件的[(_extendedprice*(1-l_discount))-(ps_supplycost *l_quantity)]之和。查询结果按国家的字母顺序升序排列,每一个国家中按年度和利润按年度的降序排列(最近的年在最前)。

查询函数定义

select

nation,

o_year,

sum(amount) as sum_profit

from (

select

n_name as nation,

extract(year from o_orderdate) as o_year,

l_extendedprice * (1 - l_discount) - ps_supplycost * l_quantity as amount

from

part,

supplier,

lineitem,

partsupp,

orders,

nation

where

s_suppkey = l_suppkey

and ps_suppkey = l_suppkey

and ps_partkey = l_partkey

and p_partkey = l_partkey

and o_orderkey = l_orderkey

and s_nationkey = n_nationkey

and p_name like '%[COLOR]%'

) as profit

group by

nation,

o_year

order by

nation,

o_year desc;

##### 替代参数

1. COLOR为生P_NAME的值的列表中的任意值

e.g

1. COLOR=green

返回项目报告查询(Q10)

此查询标记那些可能对货运给他们的零件有问题的顾客。

商业问题

此查询根据在一个季度中那些有返回零件的顾客中对收入产生影响,造成损失的前20名。这个查询只考虑在特定季度中定购的零件。查询结果列出顾客姓名,地址,国别,电话,帐册,意见信息和收入损失。按收入损失降序排列。收入损失定义为对所有具有资格的项目(1_extendedprice *(1-1_discount))和。

查询函数定义

返回前20个选中行。

select

c_custkey,

c_name,

sum(l_extendedprice * (1 - l_discount)) as revenue,

c_acctbal,

n_name,

c_address,

c_phone,

c_comment

from

customer,

orders,

lineitem,

nation

where

c_custkey = o_custkey

and l_orderkey = o_orderkey

and o_orderdate >= date '[DATE]'

and o_orderdate < date '[DATE]' + interval '3' month

and l_returnflag = 'R'

and c_nationkey = n_nationkey

group by

c_custkey,

c_name,

c_acctbal,

c_phone,

n_name,

c_address,

c_comment

order by

revenue desc;

替代参数

1.DATE是位于1993年一月到1994年十二月中任一月的一号。

重要库存标志查询(Q11)

此查询找到某一给定国供应商库存的最重要零件。

商业问题

通过扫描某给定国供应商的库存,重要库存标志查询找到在所有可得零件总价值中占重要百分比得各个零件。查询结果显示零件数,并按价值降序排列。

查询函数定义

select

ps_partkey,

sum(ps_supplycost * ps_availqty) as value

from

partsupp,

supplier,

nation

where

ps_suppkey = s_suppkey

and s_nationkey = n_nationkey

and n_name = '[NATION]'

group by

ps_partkey having

sum(ps_supplycost * ps_availqty) > (

select

sum(ps_supplycost * ps_availqty) * [FRACTION]

from

partsupp,

supplier,

nation

where

and s_nationkey = n_nationkey

and n_name = '[NATION]'

)

order by

value desc;

替代参数

NATION 是在N¬_NAME值的列表中的任意值

FRACTION为0.0001/SF

e.g

1. NATION=GERMANY;

2. FRACTION=0.0001

货运模式和命令优先查询(Q12)

这个查询决定选择现对便宜的货运模式是否会因为使消费者更多的在合同日期之后收到货物而对紧急优先命令产生负面影响。

商业问题

此查询得到顾客在某一年通过船运模式收到的项目,项目的数目属于在两个特别的船运模式下l_receiptdate超过l_commitdate的订单。只有在l_commitdate之前实际货运的项目才被考虑。迟的项目被分为两部分,一类优先级为URGENT,HIGH,另一类不是URGENT或HIGH。

查询函数定义

select

l_shipmode,

sum(case

when o_orderpriority ='1-URGENT'

or o_orderpriority ='2-HIGH'

then 1

else 0

end) as high_line_count,

sum(case

when o_orderpriority <> '1-URGENT'

and o_orderpriority <> '2-HIGH'

then 1

else 0

end) as low_line_count

from

orders,

lineitem

where

o_orderkey = l_orderkey

and l_shipmode in ('[SHIPMODE1]', '[SHIPMODE2]')

and l_commitdate < l_receiptdate

and l_shipdate < l_commitdate

and l_receiptdate >= date '[DATE]'

and l_receiptdate < date '[DATE]' + interval '1' year

group by

l_shipmode

order by

l_shipmode;

替代参数

1 SHIPMODE1 是在Modes 值的列表中的任意值

2 SHIPMODE2 是在条款4. 2中定义Modes

值的列表中的任意值,且必须有别于SHIPMODE1

3 DATE 是从1993年到1997年中任一年的一月一号

e.g

1 SHIPMODE1=MAIL;

2 SHIPMODE2=SHIP;

3 DATE=1994-01-01;

消费者分配查询(Q13)

此查询寻找消费者和他们的订单之间的关系。

商业问题

此查询通过消费者的订单数量决定分配,包括过去和现在都没有订单记录的消费者。它计算和报告多少消费者没有订单,多少有一个,两个等的订单。还要作出检查以保证订单没有属于一个特定的订单类别。特殊订单类别在订单栏中以特别的外观显示出来。

查询函数定义

select

c_count, count(*) as custdist

from (

select

c_custkey,

count(o_orderkey)

from

customer left outer join orders on

c_custkey = o_custkey

and o_comment not like ‘%[WORD1]%[WORD2]%’

group by

c_custkey

)as c_orders (c_custkey, c_count)

group by

c_count

order by

custdist desc,

c_count desc;

替代参数

1 WORD1 为以下四个可能值中任意一个:special , pending , unusual , express.

2 WORD2 为以下四个可能值中任意一个:packages , requests , accounts , deposits.

e.g

1 WORD1=special

2 WORD2=requests

促进效果查询(Q14)

此查询监视像TV广告或者特别活动一类的促销带来的市场反应。

商业问题

此查询决定某一特定时间的收入中有多大的百分比是来自促销零件。查询只是给出百分数。收入定义为(1¬_extendedprice*(1-1_discount))。

查询函数定义

select

100.00 * sum(case

when p_type like 'PROMO%'

then l_extendedprice*(1-l_discount)

else 0

end) / sum(l_extendedprice * (1 - l_discount)) as promo_revenue

from

lineitem,

part

where

l_partkey = p_partkey

and l_shipdate >= date '[DATE]'

and l_shipdate < date '[DATE]' + interval '1' month;

替代参数

1 DATE是从1993年到1997年中任一年的任一月的一号。

最高贡献供应商(Q15)

此查询决定头等供应商以便给予奖励,给予更多订单,或是给予特别认证。

商业问题

此查询找到在一季度或一年内能为总收入贡献最多的供应商。若持平,则按供应商号排列。

查询函数定义

create view revenue[STREAM_ID] (supplier_no, total_revenue) as

select

l_suppkey,

sum(l_extendedprice * (1 - l_discount))

from

lineitem

where

l_shipdate >= date '[DATE]'

and l_shipdate < date '[DATE]' + interval '3' month

group by

l_suppkey;

select

s_suppkey,

s_name,

s_address,

s_phone,

total_revenue

from

supplier,

revenue[STREAM_ID]

where

s_suppkey = supplier_no

and total_revenue = (

select

max(total_revenue)

from

revenue[STREAM_ID]

)

order by

s_suppkey;

drop view revenue[STREAM_ID];

替代参数

1 DATE 是从1993年一月到1997年十月中任一月的一号。

零件/供应商关系查询(Q16)

此查询观察多少供应商能够以给定的贡献供应零件。这可用于决定在订单量大,任务紧急时期是否有充足的供应商。

商业问题

此查询用以检验能够满足特殊顾客要求的供应商的数量。消费者很感兴趣零件商品只要它们不是给定的品牌,给定的种类,不是来自受消费者抱怨的供应商。这些零件会按数量降序排列,按品牌、种类、尺寸升序排列。

查询函数定义

select

p_brand,

p_type,

p_size,

count(distinct ps_suppkey) as supplier_cnt

from

partsupp,

part

where

p_partkey = ps_partkey

and p_brand <> '[BRAND]'

and p_type not like '[TYPE]%'

and p_size in ([SIZE1], [SIZE2], [SIZE3], [SIZE4], [SIZE5], [SIZE6], [SIZE7], [SIZE8])

and ps_suppkey not in (

select

s_suppkey

from

supplier

where

s_comment like '%Customer%Complaints%'

)

p_brand,

p_type,

p_size

order by

supplier_cnt desc,

p_brand,

p_type,

p_size;

替代参数

BRAND=Brand#MN ,M和N是两个字母,代表两个数值,相互独立,取值在1到5之间。

TYPE由任意三音节字符串的前两个音节构成。

SIZE在1到50之间任意选择的一组八个不同的值。

e.g

1. BRAND=Brand#45

1. TYPE=MEDIUM PLLISHED

1. SIZE1=49

1. SIZE 4

1. SIZE3=23

1. SIZE4=45

1. SIZE5=19

1. SIZE6=3

1. SIZE7=36

1. SIZE8=9

小量订单收入查询(Q17)

此查询计算出如果没有没有小量订单,平均年收入将损失多少。由于大量商品的货运,这将降低管理费用。

商业问题

此查询考虑零件给定品牌和给定包装类型,决定在一个七年数据库的所有订单中这些订单零件的平均项目数量(过去的和未决的)。如果这些零件中少于平均数20%的订单不再被接纳,那平均一年会损失多少呢?

查询函数定义

select

sum(l_extendedprice) / 7.0 as avg_yearly

from

lineitem,

part

where

p_partkey = l_partkey

and p_brand = '[BRAND]'

and p_container = '[CONTAINER]'

and l_quantity < (

select

0.2 * avg(l_quantity)

from

lineitem

where

l_partkey = p_partkey

);

替代参数

1. BRAND=’Brand#MN’ ,M和N是两个字母,代表两个数值,相互独立,取值在1到5之间。

2. CONTAINER 是在Containers定义的双音节字符串列表中的任意取值。

e.g

1. BRAND=Brand#23;

2. CONTAINER=MED BOX。

大订单顾客查询(Q18)

此查询根据已下的大数量订单来给顾客排序。大数量订单定义为总数量超过某一特定的水平的订单。

商业问题

此查询找到曾下过大数量订单的前100位顾客。查询结果列出顾客的姓名,顾客号,订单号,日期和总价值以及订单的数量。

查询函数定义

返回前100行。

select

c_name,

c_custkey,

o_orderkey,

o_orderdate,

o_totalprice,

sum(l_quantity)

from

customer,

orders,

lineitem

where

o_orderkey in (

select

l_orderkey

from

lineitem

group by

l_orderkey having

sum(l_quantity) > [QUANTITY]

)

and c_custkey = o_custkey

and o_orderkey = l_orderkey

group by

c_name,

c_custkey,

o_orderkey,

o_orderdate,

o_totalprice

order by

o_totalprice desc,

o_orderdate;

替代参数

1. QUANTITY是位于300-315 之间的任意值。

折扣收入查询(Q19)

此查询显示对以特定方式处理的选定品牌进行销售的总的折扣收入。这个查询是用数据挖掘工具产生格式化代码的一个例子。

商业问题

此查询得到对一些空运或人工运输零件三个不同种类所有订单的总折扣收入。这些零件的选择要综合考虑特定品牌,包装和尺寸范围。

查询函数定义

select

sum(l_extendedprice * (1 - l_discount) ) as revenue

from

lineitem,

part

where

(

p_partkey = l_partkey

and p_brand = ‘[BRAND1]’

and p_container in ( ‘SM CASE’, ‘SM BOX’, ‘SM PACK’, ‘SM PKG’)

and l_quantity >= [QUANTITY1] and l_quantity <= [QUANTITY1] + 10

and p_size between 1 and 5

and l_shipmode in (‘AIR’, ‘AIR REG’)

and l_shipinstruct = ‘DELIVER IN PERSON’

)

or

(

p_partkey = l_partkey

and p_brand = ‘[BRAND2]’

and p_container in (‘MED BAG’, ‘MED BOX’, ‘MED PKG’, ‘MED PACK’)

and l_quantity >= [QUANTITY2] and l_quantity <= [QUANTITY2] + 10

and p_size between 1 and 10

and l_shipmode in (‘AIR’, ‘AIR REG’)

and l_shipinstruct = ‘DELIVER IN PERSON’

)

or

(

p_partkey = l_partkey

and p_brand = ‘[BRAND3]’

and p_container in ( ‘LG CASE’, ‘LG BOX’, ‘LG PACK’, ‘LG PKG’)

and l_quantity >= [QUANTITY3] and l_quantity <= [QUANTITY3] + 10

and p_size between 1 and 15

and l_shipmode in (‘AIR’, ‘AIR REG’)

and l_shipinstruct = ‘DELIVER IN PERSON’

);

替代参数

1. QUANTITY1 是1到10之间的任意取值。

2. QUANTITY2 是10到20之间的任意取值。

3. QUANTITY3 是20到30之间的任意取值。

4. BRAND1 ,BRAND2 ,BRAND3=‘Brand#MN’,M和N是两个字母,代表两个数值,相互独立,取值在1到5之间。

e.g

1. QUANTITY 1=1

2. QUANTITY 0

3. QUANTITY3=20

4. BRAND1=Brand#12

5. BRAND2=Brand#23

6. BRAND3=Brand#34

潜在零件促进查询(Q20)

此查询确定在某一国能对某一零件商品提供更有竞争力价格的供应商。

商业问题

此查询确定那些对得到零件有过剩的供应商,超过供应商在某一年中货运给给定国的某一零件的50%则为过剩。只考虑符合一定命名习惯的零件。

查询函数定义

select

s_name,

s_address

from

supplier, nation

where

s_suppkey in (

select

ps_suppkey

from

partsupp

where

ps_partkey in (

select

p_partkey

from

part

where

p_name like '[COLOR]%'

)

and ps_availqty > (

select

0.5 * sum(l_quantity)

from

lineitem

where

l_partkey = ps_partkey

and l_suppkey = ps_suppkey

and l_shipdate >= date('[DATE]’)

and l_shipdate < date('[DATE]’) + interval ‘1’ year

)

)

and s_nationkey = n_nationkey

and n_name = '[NATION]'

order by

s_name;

替代参数

1. COLOR为产生P_NAME的值的列表中的任意值

2. DATE为在1993年至1997年的任一年的一月一号

3. NATION为在N_NAME的值的列表中的任意值

e.g

1. COLOR=forest

2. DATE=1994-01-01

3. NATION=CANADA

不能按时交货供应商查询(Q21)

此查询确定不能及时货运所需零件的供应商。

商业问题

此查询确定给定国其产品是多种供应订单一部分(当前状态‘F’),但不能在正常日期交付的供应商名单。

查询函数定义

select

s_name,

count(*) as numwait

from

supplier,

lineitem l1,

orders,

nation

where

s_suppkey = l1.l_suppkey

and o_orderkey = l1.l_orderkey

and o_orderstatus = 'F'

and l1.l_receiptdate > l1.l_commitdate

and exists (

select

*

from

lineitem l2

where

l2.l_orderkey = l1.l_orderkey

and l2.l_suppkey <> l1.l_suppkey

)

and not exists (

select

*

from

lineitem l3

where

l3.l_orderkey = l1.l_orderkey

and l3.l_suppkey <> l1.l_suppkey

and l3.l_receiptdate > l3.l_commitdate

)

and s_nationkey = n_nationkey

and n_name = '[NATION]'

group by

s_name

order by

numwait desc,

s_name;

替代参数

1. NATION为在N_NAME的值的列表中的任意值

e.g

1. NATION=SAUDI ARABIA

全球销售机会查询(Q22)

此查询确定消费者可能购买的地理分布。

商业问题

此查询计算在国家代码特定的范围之内,比平均水平更持肯定态度但还没下七年订单的消费者数量。此查询也反应一般人的态度。国家代码是c¬_phone的前两个字母。

查询函数定义

select

cntrycode,

count(*) as numcust,

sum(c_acctbal) as totacctbal

from (

select

substring(c_phone from 1 for 2) as cntrycode,

c_acctbal

from

customer

where

substring(c_phone from 1 for 2) in

('[I1]','[I2]’,'[I3]','[I4]','[I5]','[I6]','[I7]')

and c_acctbal > (

select

avg(c_acctbal)

from

customer

where

c_acctbal > 0.00

and substring (c_phone from 1 for 2) in

('[I1]','[I2]','[I3]','[I4]','[I5]','[I6]','[I7]')

)

and not exists (

select

*

from

orders

where

o_custkey = c_custkey

)

) as custsale

group by

cntrycode

order by

cntrycode;

替代参数

1. I1…I7是在国家代码的可能值中不重复的任意值。

e.g:

1. I1=13

2. I2=14

3. I3=23

4. I4=29

5. I5=30

6. I6=18

7. I7=17