すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:TPC-Hデータセット

最終更新日:Jun 06, 2024

このトピックでは、パフォーマンステストで実行される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;