| DROP TABLE lineitem; |
| DROP TABLE part; |
| DROP TABLE q14_promotion_effect; |
| |
| -- create the tables and load the data |
| create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/10/lineitem'; |
| create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/10/part'; |
| |
| -- create the result table |
| create table q14_promotion_effect(promo_revenue double); |
| |
| set mapred.min.split.size=536870912; |
| set hive.exec.reducers.bytes.per.reducer=1040000000; |
| |
| -- the query |
| insert overwrite table q14_promotion_effect |
| select |
| 100.00 * sum(case |
| when p_type like 'PROMO%' |
| then l_extendedprice*(1-l_discount) |
| else 0.0 |
| end |
| ) / sum(l_extendedprice * (1 - l_discount)) as promo_revenue |
| from |
| part p join lineitem l |
| on |
| l.l_partkey = p.p_partkey and l.l_shipdate >= '1995-09-01' and l.l_shipdate < '1995-10-01'; |
| |