/* 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 */