Subido por JULIO

DB2 Labs - SQL Statements

Anuncio
/* DB2 for i Lab - SQL Statements (7.1) */
/* Lab – Getting Started with Visual Explain */
SELECT*
FROMqsys2.systables
WHEREtable_schema = 'QGPL'
ORDER BYtable_name;
/* Lab – Accessing Tables and Indexes */
SELECT*
FROMorders
WHEREyear = 2011
ANDorderkey = 100;
CREATE INDEX orders_idx1 on orders (orderkey, year);
SELECT*
FROMorders
WHEREyear = 2011
ANDorderkey = 100;
SELECT*
FROMorders
ORDER BYorderkey;
/* Lab – Accessing Temporary Data Structures */
SELECTo.year, p.part, o.orderkey, o.quantity
FROMorders o,
parts p WHEREo.partkey = p.partkey
ANDo.year = 2011
ANDo.orderkey = 100
ANDo.returnflag IN ('N', 'A');
SELECT*
FROMorders o
WHEREo.year = 2011
ANDo.month = 6
ANDo.returnflag = 'R'
ORDER BYo.shipmode;
SELECT*
FROMdates d,
suppliers s
WHEREs.suppkey = 100;
CREATE ENCODED VECTOR INDEX parts_evi1 on parts (size);
SELECTp.partkey, p.part, p.size
FROMparts p
WHEREp.size IN (4, 13, 14, 30);
CREATE ENCODED VECTOR INDEX orders_evi1 on orders (returnflag);
CREATE INDEX orders_idx2 on orders (orderdate);
SELECT*
FROMorders o
WHEREo.returnflag = 'R'
ORo.orderdate = '2011-08-18';
/* Lab – Putting it all together */
SELECTo.year, p.part, s.supplier, sum(o.quantity) AS total_quantity
FROMorders o,
parts p,
suppliers s WHEREo.partkey = p.partkey
ANDo.suppkey = s.suppkey
ANDo.year = 2011
ANDo.orderkey = 100
AND(o.returnflag = 'N' OR o.returnflag = 'A')
ANDp.size IN (4, 13, 14, 30)
GROUP BYo.year, p.part, s.supplier
ORDER BYtotal_quantity desc;
CREATE INDEX ORDERS_IDX_YM on ORDERS (YEAR, MONTH);
SELECTo.year, o.month, sum(o.quantity) AS total_quantity
FROMorders o,
parts p WHEREo.partkey = p.partkey
ANDo.year = 2011
ANDo.returnflag = 'R'
GROUP BYo.year, o.month
OPTIMIZE FOR 1 ROW;
SELECTo.year, o.month, sum(o.quantity) as total_quantity
FROMorders o,
parts p WHEREo.partkey = p.partkey
ANDo.year = 2011
ANDo.returnflag = 'R'
GROUP BYo.year, o.month
OPTIMIZE FOR ALL ROWS;
/* Lab – Views and Subqueries */
CREATE VIEW my_view1 AS
SELECTd.year, d.quarter, d.month, s.suppkey, s.supplier, o.returnflag, o.orderkey, o.quantity, o.revenue_wo_tax
FROMorders o,
suppliers s,
dates d WHEREo.suppkey = s.suppkey
ANDo.shipdate = d.datekey;
SELECT*
FROMmy_view1
WHEREyear = 2011
ANDorderkey BETWEEN 1 and 50;
CREATE VIEW my_view2 AS
SELECTyear, quarter, month, SUM(quantity) AS total_quantity
FROMorders
GROUP BYyear, quarter, month;
SELECTyear, quarter, MIN(total_quantity), MAX(total_quantity), AVG(total_quantity)
FROMmy_view2
WHEREyear = 2011
GROUP BYyear, quarter;
SELECTa.year, a.month, a.returnflag, a.partkey, a.quantity, a.revenue_wo_tax
FROMorders a
WHEREa.year = 2011
ANDa.month = 6
ANDa.returnflag = 'R'
ANDa.quantity >
(SELECTAVG(b.quantity)
FROMorders b
WHEREb.year = 2011
ANDb.month = 6
ANDb.returnflag = 'R');
CREATE ENCODED VECTOR INDEX orders_evi_avg_quantity
ON orders
(year, month, returnflag) INCLUDE (avg(quantity));
SELECTa.year, a.month, a.returnflag, a.partkey, a.quantity, a.revenue_wo_tax
FROMorders a
WHEREa.year = 2011
ANDa.month = 6
ANDa.returnflag = 'R'
ANDa.quantity >
(SELECTAVG(b.quantity)
FROMorders b
WHEREb.year = 2011
ANDb.month = 6
ANDb.returnflag = 'R');
SELECTa.year, a.month, a.custkey, a.returnflag, a.partkey, a.quantity, a.revenue_wo_tax
FROMorders a
WHEREa.year = 2011
ANDa.month = 6
ANDa.returnflag = 'R'
ANDa.custkey IN
(SELECTc.custkey
FROMcustomers c
WHEREc.country = 'JAPAN'
ANDc.region = 'SOUTHWEST');
UPDATEorders o
SETo.expander =
(SELECTc.customer
FROMcustomers c
WHEREo.custkey = c.custkey)
WHEREo.orderdate IN
(SELECTd.datekey
FROMdates d
WHEREd.year = 2011
ANDd.week = 1);
/* Lab – Art of Perfect Indexes */
SELECTd.year,
d.week,
s.supplier,
o.orderkey,
o.quantity,
o.revenue_wo_tax
FROMorders o
INNER JOINsuppliers sON (o.suppkey = s.suppkey) INNER JOINdates dON (o.shipdate = d.datekey)
WHEREs.country = 'UNITED STATES'
ANDd.week = 52
ORDER BYs.supplier;
CREATE INDEX dates_idx3 ON dates (week);
CREATE INDEX suppliers_idx3 ON suppliers (country);
SELECTd.year,
d.week,
s.supplier,
o.orderkey,
o.quantity,
o.revenue_wo_tax
FROMorders o
INNER JOINsuppliers sON (o.suppkey = s.suppkey) INNER JOINdates dON (o.shipdate = d.datekey)
WHEREs.country = 'UNITED STATES'
ANDd.week = 52
ORDER BYs.supplier;
CREATE INDEX orders_idx4 ON orders (suppkey);
CREATE INDEX orders_idx5 ON orders (shipdate);
CREATE INDEX suppliers_idx4 ON suppliers (suppkey);
CREATE INDEX dates_idx4 ON dates (datekey);
SELECTd.year,
d.week,
s.supplier,
o.orderkey,
o.quantity,
o.revenue_wo_tax
FROMorders o
INNER JOINsuppliers sON (o.suppkey = s.suppkey) INNER JOINdates dON (o.shipdate = d.datekey)
WHEREs.country = 'UNITED STATES'
ANDd.week = 52
ORDER BYs.supplier;
CREATE INDEX suppliers_idx5 ON suppliers (supplier);
SELECTd.year,
d.week,
s.supplier,
o.orderkey,
o.quantity,
o.revenue_wo_tax
FROMorders o
INNER JOINsuppliers sON (o.suppkey = s.suppkey) INNER JOINdates dON (o.shipdate = d.datekey)
WHEREs.country = 'UNITED STATES'
ANDd.week = 52
ORDER BYs.supplier;
CREATE ENCODED VECTOR INDEX orders_evi6 ON orders (shipdate);
CREATE ENCODED VECTOR INDEX orders_evi7 ON orders (suppkey);
CREATE INDEX suppliers_idx6 ON suppliers (country, suppkey);
CREATE INDEX suppliers_idx7 ON suppliers (country, supplier);
CREATE INDEX dates_idx6 ON dates (week, datekey);
SELECTd.year,
d.week,
s.supplier,
o.orderkey,
o.quantity,
o.revenue_wo_tax
FROMorders o
INNER JOINsuppliers sON (o.suppkey = s.suppkey) INNER JOINdates dON (o.shipdate = d.datekey)
WHEREs.country = 'UNITED STATES'
ANDd.week = 52
ORDER BYs.supplier;
SELECTd.year,
d.week,
s.supplier,
o.orderkey,
o.quantity,
o.revenue_wo_tax
FROMorders o
INNER JOINsuppliers sON (o.suppkey = s.suppkey) INNER JOINdates dON (o.shipdate = d.datekey)
WHEREs.country = 'UNITED STATES'
ANDd.week = 52
ORDER BYs.supplier
OPTIMIZE FOR ALL ROWS;
SELECTd.year,
d.week,
s.supplier,
o.orderkey,
o.quantity,
o.revenue_wo_tax
FROMorders o
INNER JOINsuppliers sON (o.suppkey = s.suppkey) INNER JOINdates dON (o.shipdate = d.datekey)
WHEREs.country = 'UNITED STATES'
ANDd.week = 52
ORDER BYs.supplier
OPTIMIZE FOR 5 ROWS;
CREATE ENCODED VECTOR INDEX orders_evi_agg ON orders
(year(shipdate) as shipyear) INCLUDE (sum(quantity));
SELECTyear(o.shipdate) as shipyear,
sum(o.quantity) as totalquantity
FROMorders o
GROUP BY year(o.shipdate)
ORDER BY year(o.shipdate);
/* Lab – SQE Plan Cache and Show Current SQL */
SELECTo.year, o.month, s.supplier, o.orderkey, o.quantity, o.revenue_wo_tax
FROMorders o,
suppliers s WHEREo.suppkey = s.suppkey
ANDs.country = 'VIETNAM'
ORDER BYo.year, o.month, o.orderkey;
/* Lab – SQL Performance Monitor */
CALL DBQTEST_APP;
CREATE INDEX CUSTOMERS_UPPER_IX ON CUSTOMERS (UPPER(CUSTOMER));
CALL DBQTEST_APP;
/* Lab – QAQQINI Query options and LPG */
SET SCHEMADBQTEAMxx;
SELECTC.CUSTOMER, C.CUSTKEY, P.PART, O.PARTKEY,
S.SUPPLIER, O.ORDERDATE, O.COMMITDATE,
O.SHIPDATE, O.RECEIPTDATE, O.SHIPMODE
FROMORDERS O,
PARTS P,
CUSTOMERS C,
SUPPLIERS S,
DATES D
WHERED.YEAR = 2011
ANDD.MONTH = 6
ANDP.MFGR = 'Manufacturer#1'
ANDC.CUSTOMER BETWEEN 'Customer#000000001'
AND 'Customer#000000100'
AND(S.COUNTRY = 'CANADA'
OR S.COUNTRY = 'FRANCE'
OR S.COUNTRY = 'UNITED KINGDOM')
ANDO.PARTKEY = P.PARTKEY
ANDO.CUSTKEY = C.CUSTKEY
ANDO.SUPPKEY = S.SUPPKEY
ANDO.SHIPDATE = D.DATEKEY;
/* END */
Descargar