このトピックでは、パフォーマンステストで実行される22のSQLクエリについて説明します。
説明 このトピックで説明するTPC-Hのパフォーマンステストは、TPC-Hのベンチマークテストに基づいて実装されますが、TPC-Hのベンチマークテストのすべての要件を満たすことはできません。
- 選択するSQL1
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) をavg_qtyとして、 avg(l_extendedprice) as avg_price, avg(l_discount) as avg_disc, count(*) as count_order から lineitem ここで l_shipdate <= date '1998-12-01 '-インターバル '120' 日 グループによって l_returnflag、 l_linestatus による注文 l_returnflag、 l_linestatus;
- SQL2
の選択 s_acctbal, s_name、 n_name、 p_partkey, p_mfgr, s_address, s_phone, s_comment から 部分, サプライヤー, partsupp, 国家、 リージョン ここで p_partkey = ps_partkey およびs_suppkey = ps_suppkey およびp_size = 48 と「 % STEEL」のようなp_type およびs_nationkey = n_nationkey とn_regionkey = r_regionkey とr_name = 'EUROPE' およびps_supplycost = ( 選択 min(ps_supplycost) から partsupp, サプライヤー, 国家、 region where p_partkey = ps_partkey およびs_suppkey = ps_suppkey およびs_nationkey = n_nationkey とn_regionkey = r_regionkey とr_name = 'EUROPE' ) による注文 s_acctbal desc、 n_name、 s_name、 p_partkey 制限100;
- SQL3
の選択 l_orderkey, sum(l_extendedprice * (1 - l_discount)) を収益として、 o_orderdate, o_shippriority から 顧客、 注文、 lineitem ここで c_mktsegment = 'MACHINERY' とc_custkey = o_custkey とl_orderkey = o_orderkey およびo_orderdate < date '1995-03-23' およびl_shipdate > date '1995-03-23' グループによって l_orderkey, o_orderdate, o_shippriority による注文 収益desc、 o_orderdate 限界10;
- 選択するSQL4
o_orderpriority, count(*) as order_count から 注文 ここで o_orderdate >= date '1996-07-01' およびo_orderdate < date '1996-07-01 '+ interval '3' 月 そして存在する () 選択 * から lineitem where l_orderkey = o_orderkey and l_commitdate < l_receiptdate ) グループによって o_orderpriority による注文 o_orderpriority;
- SQL5
を選択 n_name、 収益としての合計 (l_extendedprice * (1 - l_discount)) から 顧客、 注文、 lineitem, サプライヤー, 国家、 リージョン ここで c_custkey = o_custkey とl_orderkey = o_orderkey とl_suppkey = s_suppkey およびc_nationkey = s_nationkey およびs_nationkey = n_nationkey とn_regionkey = r_regionkey とr_name = 'EUROPE' およびo_orderdate >= date '1996-01-01' およびo_orderdate < date '1996-01-01 '+ interval '1' 年 グループによって n_name による注文 収益desc;
- 選択するSQL6
収益としての合計 (l_extendedprice * l_discount) から lineitem ここで l_shipdate >= date '1996-01-01' およびl_shipdate < date '1996-01-01 '+ interval '1' 年 および0.02 - 0.01と0.02 + 0.01の間のl_discount およびl_quantity < 24;
- SQL7
の選択 supp_nation, cust_nation, l_year, 収益としての合計 (ボリューム) から ( 選択 n1.n_name as supp_nation, n2.n_name as cust_nation, extract (年からl_shipdate) as l_year, ボリュームとしてl_extendedprice * (1 - l_discount) から サプライヤー, lineitem, 注文、 顧客、 国家n1, nation n2 where s_suppkey = l_suppkey とo_orderkey = l_orderkey とc_custkey = o_custkey およびs_nationkey = n1.n_nationkey とc_nationkey = n2.n_nationkey と ( (n1.n_name = 'CANADA' およびn2.n_name = 'BRAZIL') または (n1.n_name = 'BRAZIL' およびn2.n_name = 'CANADA') ) 日付「1995-01-01」と日付「1996-12-31」の間のl_shipdate ) 出荷として グループによって supp_nation, cust_nation, l_year による注文 supp_nation, cust_nation, l_year;
- SQL8
の選択 o_year, sum (ケース) nation = 'BRAZIL' のとき、ボリューム else 0 end) / sum(volume) as mkt_share から ( 選択 exact (year from o_orderdate) as o_year, ボリュームとしてl_extendedprice * (1 - l_discount) 、 n2.n_nationとしての名前 から 部分, サプライヤー, lineitem, 注文、 顧客、 国家n1, 国家n2, region where p_partkey = l_partkey およびs_suppkey = l_suppkey とl_orderkey = o_orderkey とo_custkey = c_custkey とc_nationkey = n1.n_nationkey とn1.n_regionkey = r_regionkey およびr_name = 'AMERICA' およびs_nationkey = n2.n_nationkey 日付「1995-01-01」と日付「1996-12-31」の間のo_orderdate p_type = 'LARGE ANODIZED COPPER' ) all_nationsとして グループによって o_year による注文 o_year;
- SQL9
の選択 国家、 o_year, sum(amount) as sum_profit から ( 選択 n_name as nation, exact (year from o_orderdate) as o_year, l_extendedprice * (1 - l_discount) -金額としてps_supplycost * l_quantity から 部分, サプライヤー, lineitem, partsupp, 注文、 国家 where s_suppkey = l_suppkey とps_suppkey = l_suppkey とps_partkey = l_partkey およびp_partkey = l_partkey とo_orderkey = l_orderkey およびs_nationkey = n_nationkey 「 % maroon % 」のようなp_name ) 利益として グループによって 国家、 o_year による注文 国家、 o_year desc;
- 選択するSQL10
c_custkey, c_name, sum(l_extendedprice * (1 - l_discount)) を収益として、 c_acctbal, n_name、 c_address, c_phone, c_comment から 顧客、 注文、 lineitem, 国家 ここで c_custkey = o_custkey とl_orderkey = o_orderkey およびo_orderdate >= date '1993-02-01' およびo_orderdate < date '1993-02-01 '+ interval '3' 月 およびl_returnflag = 'R' およびc_nationkey = n_nationkey グループによって c_custkey, c_name, c_acctbal, c_phone, n_name、 c_address, c_comment による注文 収益desc 限界20;
- 選択するSQL11
ps_partkey, 値としての合計 (ps_supplycost * ps_availqty) から partsupp, サプライヤー, 国家 ここで ps_suppkey = s_suppkey およびs_nationkey = n_nationkey とn_name = 'EGYPT' グループによって ps_partkeyを持つ sum(ps_supplycost * ps_availqty) > ( 選択 sum(ps_supplycost * ps_availqty) * 0.0001000000 から partsupp, サプライヤー, 国家 where ps_suppkey = s_suppkey およびs_nationkey = n_nationkey とn_name = 'EGYPT' ) による注文 値desc;
- 選択するSQL12
l_shipmode, sum (ケース) o_orderpriority = '1-URGENT' のとき またはo_orderpriority = '2-HIGH' それから1 else 0 end) としてhigh_line_count、 sum (ケース) o_orderpriority <> '1-URGENT' のとき およびo_orderpriority <> '2-HIGH' それから1 else 0 end) as low_line_count から 注文、 lineitem ここで o_orderkey = l_orderkey および ('FOB' 、'AIR') のl_shipmode and l_commitdate < l_receiptdate and l_shipdate < l_commitdate およびl_receiptdate >= date '1997-01-01' l_receiptdate < date '1997-01-01 '+ interval '1' year グループによって l_shipmode による注文 l_shipmode;
- 選択するSQL13
c_count, custdistとしてカウント (*) から ( 選択 c_custkey, count(o_orderkey) をc_countとして から 顧客は外側の参加注文を残しました c_custkey = o_custkey とo_commentは '% special % deposit %' のようではありません グループによって c_custkey ) c_orders グループによって c_count による注文 custdist desc, c_count desc;
- SQL14
の選択 100.00 * sum (場合) 「PROMO % 」のようなp_typeのとき その後l_extendedprice * (1 - l_discount) else 0 end) / sum(l_extendedprice * (1 - l_discount)) as promo_revenue から lineitem, 部分 ここで l_partkey = p_partkey およびl_shipdate >= date '1997-06-01' およびl_shipdate < date '1997-06-01 '+ interval '1' 月;
- SQL15
は、ビューrevenue0 (supplier_no、total_revenue) を 選択 l_suppkey, sum(l_extendedprice * (1 - l_discount)) から lineitem where l_shipdate >= date '1995-02-01' l_shipdate < date '1995-02-01 '+ interval '3' 月 グループによって l_suppkey; 選択 s_suppkey, s_name、 s_address, s_phone, total_revenue から サプライヤー, revenue0 ここで s_suppkey = supplier_no とtotal_revenue = ( 選択 max(total_revenue) から revenue0 ) による注文 s_suppkey; ドロップビューrevenue0;
- 選択するSQL16
p_brand, p_type, p_size, count (異なるps_suppkey) as supplier_cnt から partsupp, 部分 ここで p_partkey = ps_partkey p_brand <> 'Brand#45' 「SMALL ANODIZED % 」のようではないp_type およびp_size in (47、15、37、30、46、16、18、6) とps_suppkeyが入っていない ( 選択 s_suppkey から サプライヤー where s_comment like '% Customer % Complaints %' ) グループによって p_brand, p_type, p_size による注文 supplier_cnt desc, p_brand, p_type, p_size;
- 選択するSQL17
sum(l_extendedprice) / 7.0 as avg_yearly から lineitem, 部分 ここで p_partkey = l_partkey p_brand = 'Brand#51' およびp_container = 'WRAP PACK' and l_quantity < ( 選択 0.2 * avg(l_quantity) から lineitem where l_partkey = p_partkey );
- 選択するSQL18
c_name, c_custkey, o_orderkey, o_orderdate, o_totalprice、 sum(l_quantity) から 顧客、 注文、 lineitem ここで o_orderkey in ( 選択 l_orderkey から lineitem グループによって l_orderkey持っている sum(l_quantity) > 312 ) とc_custkey = o_custkey とo_orderkey = l_orderkey グループによって c_name, c_custkey, o_orderkey, o_orderdate, o_totalprice による注文 o_totalprice desc、 o_orderdate 制限100;
- 選択するSQL19
収益としての合計 (l_extendedprice * (1 - l_discount)) から lineitem, 部分 ここで ( p_partkey = l_partkey p_brand = 'Brand#52' and p_container in ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG') およびl_quantity >= 3およびl_quantity <= 3 + 10 and p_size between 1 and 5 and l_shipmode in ('AIR', 'AIR REG') とl_shipinnote='DELIVER IN PERSON ) または ( p_partkey = l_partkey p_brand = 'Brand#43' and p_container in ('MED BAG', 'MED BOX', 'MED PKG', 'MED PACK') およびl_quantity >= 12およびl_quantity <= 12 + 10 and p_size between 1 and 10 and l_shipmode in ('AIR', 'AIR REG') とl_shipinnote='DELIVER IN PERSON ) または ( p_partkey = l_partkey p_brand = 'Brand#52' and p_container in ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG') and l_quantity >= 21 and l_quantity <= 21 + 10 and p_size between 1 and 15 and l_shipmode in ('AIR', 'AIR REG') とl_shipinnote='DELIVER IN PERSON );
- 選択するSQL20
s_name、 s_address から サプライヤー, 国家 ここで () のs_suppkey 選択 ps_suppkey から partsupp where () のps_partkey 選択 p_partkey から 部分 where 「drab % 」のようなp_name ) およびps_availqty > ( 選択 0.5 * sum(l_quantity) から lineitem where l_partkey = ps_partkey とl_suppkey = ps_suppkey and l_shipdate >= date '1996-01-01' およびl_shipdate < date '1996-01-01 '+ interval '1' 年 ) ) およびs_nationkey = n_nationkey およびn_name = 'KENYA による注文 s_name;
- 選択するSQL21
s_name、 numwaitとしてカウント (*) から サプライヤー, lineitem l1, 注文、 国家 ここで s_suppkey = l1.l_suppkey とo_orderkey = l1.l_orderkey とo_orderstatus = 'F' およびl1.l_receiptdate > l1.l_commitdate そして存在する () 選択 * から lineitem l2 where l2.l_orderkey = l1.l_orderkey とl2.l_suppkey <> l1.l_suppkey ) 存在しない (存在しない) 選択 * から lineitem l3 where l3.l_orderkey = l1.l_orderkey とl3.l_suppkey <> l1.l_suppkey およびl3.l_receiptdate > l3.l_commitdate ) およびs_nationkey = n_nationkey とn_name = 'PERU' グループによって s_name による注文 numwait desc, s_name 制限100;
- 選択するSQL22
cntrycode, numcustとしてカウント (*) 、 sum(c_acctbal) as totacctbal から ( 選択 cntrycodeとしての部分文字列 (c_phone from 1 for 2) 、 c_acctbal から customer where の部分文字列 (c_phone from 1 for 2) (「24」、「32」、「17」、「18」、「12」、「14」、「22」) およびc_acctbal > ( 選択 avg(c_acctbal) から customer where c_acctbal > 0.00 の部分文字列 (c_phone from 1 for 2) (「24」、「32」、「17」、「18」、「12」、「14」、「22」) ) 存在しない (存在しない) 選択 * から 注文 where o_custkey = c_custkey ) ) custsaleとして グループによって cntrycode による注文 cntrycode;