Back to home page

OSCL-LXR

 
 

    


0001 WITH all_sales AS (
0002   SELECT
0003     d_year,
0004     i_brand_id,
0005     i_class_id,
0006     i_category_id,
0007     i_manufact_id,
0008     SUM(sales_cnt) AS sales_cnt,
0009     SUM(sales_amt) AS sales_amt
0010   FROM (
0011          SELECT
0012            d_year,
0013            i_brand_id,
0014            i_class_id,
0015            i_category_id,
0016            i_manufact_id,
0017            cs_quantity - COALESCE(cr_return_quantity, 0) AS sales_cnt,
0018            cs_ext_sales_price - COALESCE(cr_return_amount, 0.0) AS sales_amt
0019          FROM catalog_sales
0020            JOIN item ON i_item_sk = cs_item_sk
0021            JOIN date_dim ON d_date_sk = cs_sold_date_sk
0022            LEFT JOIN catalog_returns ON (cs_order_number = cr_order_number
0023              AND cs_item_sk = cr_item_sk)
0024          WHERE i_category = 'Books'
0025          UNION
0026          SELECT
0027            d_year,
0028            i_brand_id,
0029            i_class_id,
0030            i_category_id,
0031            i_manufact_id,
0032            ss_quantity - COALESCE(sr_return_quantity, 0) AS sales_cnt,
0033            ss_ext_sales_price - COALESCE(sr_return_amt, 0.0) AS sales_amt
0034          FROM store_sales
0035            JOIN item ON i_item_sk = ss_item_sk
0036            JOIN date_dim ON d_date_sk = ss_sold_date_sk
0037            LEFT JOIN store_returns ON (ss_ticket_number = sr_ticket_number
0038              AND ss_item_sk = sr_item_sk)
0039          WHERE i_category = 'Books'
0040          UNION
0041          SELECT
0042            d_year,
0043            i_brand_id,
0044            i_class_id,
0045            i_category_id,
0046            i_manufact_id,
0047            ws_quantity - COALESCE(wr_return_quantity, 0) AS sales_cnt,
0048            ws_ext_sales_price - COALESCE(wr_return_amt, 0.0) AS sales_amt
0049          FROM web_sales
0050            JOIN item ON i_item_sk = ws_item_sk
0051            JOIN date_dim ON d_date_sk = ws_sold_date_sk
0052            LEFT JOIN web_returns ON (ws_order_number = wr_order_number
0053              AND ws_item_sk = wr_item_sk)
0054          WHERE i_category = 'Books') sales_detail
0055   GROUP BY d_year, i_brand_id, i_class_id, i_category_id, i_manufact_id)
0056 SELECT
0057   prev_yr.d_year AS prev_year,
0058   curr_yr.d_year AS year,
0059   curr_yr.i_brand_id,
0060   curr_yr.i_class_id,
0061   curr_yr.i_category_id,
0062   curr_yr.i_manufact_id,
0063   prev_yr.sales_cnt AS prev_yr_cnt,
0064   curr_yr.sales_cnt AS curr_yr_cnt,
0065   curr_yr.sales_cnt - prev_yr.sales_cnt AS sales_cnt_diff,
0066   curr_yr.sales_amt - prev_yr.sales_amt AS sales_amt_diff
0067 FROM all_sales curr_yr, all_sales prev_yr
0068 WHERE curr_yr.i_brand_id = prev_yr.i_brand_id
0069   AND curr_yr.i_class_id = prev_yr.i_class_id
0070   AND curr_yr.i_category_id = prev_yr.i_category_id
0071   AND curr_yr.i_manufact_id = prev_yr.i_manufact_id
0072   AND curr_yr.d_year = 2002
0073   AND prev_yr.d_year = 2002 - 1
0074   AND CAST(curr_yr.sales_cnt AS DECIMAL(17, 2)) / CAST(prev_yr.sales_cnt AS DECIMAL(17, 2)) < 0.9
0075 ORDER BY
0076   sales_cnt_diff,
0077   sales_amt_diff -- This order-by condition did not exist in TPCDS v1.4
0078 LIMIT 100