以下のテーブルが作成済みであるとします。
CREATE TABLE orders ( o_orderkey INTEGER NOT NULL, o_custkey INTEGER, o_orderstatus CHARACTER(1) NOT CASESPECIFIC, o_totalprice DECIMAL(13,2) NOT NULL, o_orderdate DATE FORMAT 'yyyy-mm-dd' NOT NULL, o_orderpriority CHARACTER(21), o_comment VARCHAR(79)) PRIMARY INDEX (o_orderkey) PARTITION BY (RANGE_N(o_custkey BETWEEN 0 AND 49999 EACH 1000), RANGE_N(o_orderdate BETWEEN DATE '2000-01-01' AND DATE '2006-12-31' EACH INTERVAL '1' MONTH), CASE_N(o_orderstatus = 'S', o_orderstatus = 'C', o_orderstatus = 'F')) UNIQUE INDEX (o_orderkey); CREATE TABLE lineitem ( l_orderkey INTEGER NOT NULL, l_partkey INTEGER NOT NULL, l_suppkey INTEGER, l_linenumber INTEGER, l_quantity INTEGER NOT NULL, l_extendedprice DECIMAL(13,2) NOT NULL, l_discount DECIMAL(13,2), l_tax DECIMAL(13,2), l_returnflag CHARACTER(1), l_linestatus CHARACTER(1), l_shipdate DATE FORMAT 'yyyy-mm-dd', l_commitdate DATE FORMAT 'yyyy-mm-dd', l_receiptdate DATE FORMAT 'yyyy-mm-dd', l_shipinstruct VARCHAR(25), l_shipmode VARCHAR(25), l_comment VARCHAR(44)) PRIMARY INDEX (l_orderkey) PARTITION BY (RANGE_N(l_suppkey BETWEEN 0 AND 4999 EACH 100), RANGE_N(l_shipdate BETWEEN DATE '2000-01-01' AND DATE '2006-12-31' EACH INTERVAL '1' MONTH), CASE_N(l_shipmode = 'USPS FirstClass', l_shipmode = 'UPS', l_shipmode = 'FedEx', NO CASE OR UNKNOWN));
以下はシステム派生列PARTITION列の使用例です。
ステータスSが付いたすべての顧客注文の列を選択します。リクエストの選択リストでPARTITION#L3が明示的に指定されなかったため、システムはPARTITION#L3の値を返しません。リクエストは1つのテーブルしか参照しないため、PARTITION#L3を満たすことは必要ではないことに気をつけてください。
SELECT * FROM orders WHERE orders.PARTITION#L3=1;
IDが1000から1999 (レベル1のパーティション2)の間の顧客で、ステータスがC (レベル3のパーティション2)の注文がある顧客の行を選択します。PARTITION#L1およびPARTITION#L3はリクエストの選択リストで明示的に指定されなかったため、システムはこれらの値を返しません。
SELECT * FROM orders WHERE orders.PARTITION#L1=2 AND PARTITION#L3=2;
2003年1月(レベル2のパーティション37)の、IDが3700と3799の間(レベル1のパーティション38)のサプライヤーで、出荷モードがFedEx (レベル3のパーティション3)の行を選択します。PARTITIONは組み合わせのパーティション式のパーティション番号で、(PARTITION#L1-1)*84*4+(PARTITION#L2-1)*4+(PARTITION#L3)に等しくなります。 この例では、84はレベル2に対して定義されたパーティションの数で、4はレベル3に対して定義されたパーティションの数です。つまり、12579は(38-1)*84*4+(37-1)*4+3から派生します。
Vantageは、PARTITIONがリクエストの選択リストで明示的に指定されなかったため、PARTITIONの値を返しません。
SELECT * FROM lineitem WHERE lineitem.PARTITION = 12579;
注文ステータスがF (UPSを使用して出荷された)の注文品目の行を選択します。リクエストでは複数のテーブルが参照されるため、PARTITION#L3はlineitemで修飾される必要があることに注意してください。
SELECT * FROM orders, lineitem WHERE orders.PARTITION#L3 = 3 AND lineitem.PARTITION#L3 = 2 AND orders.o_orderkey = lineitem.l_orderkey;