Back to home page

OSCL-LXR

 
 

    


0001 WITH cross_items AS
0002 (SELECT i_item_sk ss_item_sk
0003   FROM item,
0004     (SELECT
0005       iss.i_brand_id brand_id,
0006       iss.i_class_id class_id,
0007       iss.i_category_id category_id
0008     FROM store_sales, item iss, date_dim d1
0009     WHERE ss_item_sk = iss.i_item_sk
0010       AND ss_sold_date_sk = d1.d_date_sk
0011       AND d1.d_year BETWEEN 1999 AND 1999 + 2
0012     INTERSECT
0013     SELECT
0014       ics.i_brand_id,
0015       ics.i_class_id,
0016       ics.i_category_id
0017     FROM catalog_sales, item ics, date_dim d2
0018     WHERE cs_item_sk = ics.i_item_sk
0019       AND cs_sold_date_sk = d2.d_date_sk
0020       AND d2.d_year BETWEEN 1999 AND 1999 + 2
0021     INTERSECT
0022     SELECT
0023       iws.i_brand_id,
0024       iws.i_class_id,
0025       iws.i_category_id
0026     FROM web_sales, item iws, date_dim d3
0027     WHERE ws_item_sk = iws.i_item_sk
0028       AND ws_sold_date_sk = d3.d_date_sk
0029       AND d3.d_year BETWEEN 1999 AND 1999 + 2) x
0030   WHERE i_brand_id = brand_id
0031     AND i_class_id = class_id
0032     AND i_category_id = category_id
0033 ),
0034     avg_sales AS
0035   (SELECT avg(quantity * list_price) average_sales
0036   FROM (SELECT
0037           ss_quantity quantity,
0038           ss_list_price list_price
0039         FROM store_sales, date_dim
0040         WHERE ss_sold_date_sk = d_date_sk AND d_year BETWEEN 1999 AND 1999 + 2
0041         UNION ALL
0042         SELECT
0043           cs_quantity quantity,
0044           cs_list_price list_price
0045         FROM catalog_sales, date_dim
0046         WHERE cs_sold_date_sk = d_date_sk AND d_year BETWEEN 1999 AND 1999 + 2
0047         UNION ALL
0048         SELECT
0049           ws_quantity quantity,
0050           ws_list_price list_price
0051         FROM web_sales, date_dim
0052         WHERE ws_sold_date_sk = d_date_sk AND d_year BETWEEN 1999 AND 1999 + 2) x)
0053 SELECT *
0054 FROM
0055   (SELECT
0056     'store' channel,
0057     i_brand_id,
0058     i_class_id,
0059     i_category_id,
0060     sum(ss_quantity * ss_list_price) sales,
0061     count(*) number_sales
0062   FROM store_sales, item, date_dim
0063   WHERE ss_item_sk IN (SELECT ss_item_sk
0064   FROM cross_items)
0065     AND ss_item_sk = i_item_sk
0066     AND ss_sold_date_sk = d_date_sk
0067     AND d_week_seq = (SELECT d_week_seq
0068   FROM date_dim
0069   WHERE d_year = 1999 + 1 AND d_moy = 12 AND d_dom = 11)
0070   GROUP BY i_brand_id, i_class_id, i_category_id
0071   HAVING sum(ss_quantity * ss_list_price) > (SELECT average_sales
0072   FROM avg_sales)) this_year,
0073   (SELECT
0074     'store' channel,
0075     i_brand_id,
0076     i_class_id,
0077     i_category_id,
0078     sum(ss_quantity * ss_list_price) sales,
0079     count(*) number_sales
0080   FROM store_sales, item, date_dim
0081   WHERE ss_item_sk IN (SELECT ss_item_sk
0082   FROM cross_items)
0083     AND ss_item_sk = i_item_sk
0084     AND ss_sold_date_sk = d_date_sk
0085     AND d_week_seq = (SELECT d_week_seq
0086   FROM date_dim
0087   WHERE d_year = 1999 AND d_moy = 12 AND d_dom = 11)
0088   GROUP BY i_brand_id, i_class_id, i_category_id
0089   HAVING sum(ss_quantity * ss_list_price) > (SELECT average_sales
0090   FROM avg_sales)) last_year
0091 WHERE this_year.i_brand_id = last_year.i_brand_id
0092   AND this_year.i_class_id = last_year.i_class_id
0093   AND this_year.i_category_id = last_year.i_category_id
0094 ORDER BY this_year.channel, this_year.i_brand_id, this_year.i_class_id, this_year.i_category_id
0095 LIMIT 100