Back to home page

OSCL-LXR

 
 

    


0001 WITH ssr AS
0002 ( SELECT
0003     s_store_id,
0004     sum(sales_price) AS sales,
0005     sum(profit) AS profit,
0006     sum(return_amt) AS RETURNS,
0007     sum(net_loss) AS profit_loss
0008   FROM
0009     (SELECT
0010        ss_store_sk AS store_sk,
0011        ss_sold_date_sk AS date_sk,
0012        ss_ext_sales_price AS sales_price,
0013        ss_net_profit AS profit,
0014        cast(0 AS DECIMAL(7, 2)) AS return_amt,
0015        cast(0 AS DECIMAL(7, 2)) AS net_loss
0016      FROM store_sales
0017      UNION ALL
0018      SELECT
0019        sr_store_sk AS store_sk,
0020        sr_returned_date_sk AS date_sk,
0021        cast(0 AS DECIMAL(7, 2)) AS sales_price,
0022        cast(0 AS DECIMAL(7, 2)) AS profit,
0023        sr_return_amt AS return_amt,
0024        sr_net_loss AS net_loss
0025      FROM store_returns)
0026     salesreturns, date_dim, store
0027   WHERE date_sk = d_date_sk
0028     AND d_date BETWEEN cast('2000-08-23' AS DATE)
0029   AND ((cast('2000-08-23' AS DATE) + INTERVAL 14 days))
0030     AND store_sk = s_store_sk
0031   GROUP BY s_store_id),
0032     csr AS
0033   ( SELECT
0034     cp_catalog_page_id,
0035     sum(sales_price) AS sales,
0036     sum(profit) AS profit,
0037     sum(return_amt) AS RETURNS,
0038     sum(net_loss) AS profit_loss
0039   FROM
0040     (SELECT
0041        cs_catalog_page_sk AS page_sk,
0042        cs_sold_date_sk AS date_sk,
0043        cs_ext_sales_price AS sales_price,
0044        cs_net_profit AS profit,
0045        cast(0 AS DECIMAL(7, 2)) AS return_amt,
0046        cast(0 AS DECIMAL(7, 2)) AS net_loss
0047      FROM catalog_sales
0048      UNION ALL
0049      SELECT
0050        cr_catalog_page_sk AS page_sk,
0051        cr_returned_date_sk AS date_sk,
0052        cast(0 AS DECIMAL(7, 2)) AS sales_price,
0053        cast(0 AS DECIMAL(7, 2)) AS profit,
0054        cr_return_amount AS return_amt,
0055        cr_net_loss AS net_loss
0056      FROM catalog_returns
0057     ) salesreturns, date_dim, catalog_page
0058   WHERE date_sk = d_date_sk
0059     AND d_date BETWEEN cast('2000-08-23' AS DATE)
0060   AND ((cast('2000-08-23' AS DATE) + INTERVAL 14 days))
0061     AND page_sk = cp_catalog_page_sk
0062   GROUP BY cp_catalog_page_id)
0063   ,
0064     wsr AS
0065   ( SELECT
0066     web_site_id,
0067     sum(sales_price) AS sales,
0068     sum(profit) AS profit,
0069     sum(return_amt) AS RETURNS,
0070     sum(net_loss) AS profit_loss
0071   FROM
0072     (SELECT
0073        ws_web_site_sk AS wsr_web_site_sk,
0074        ws_sold_date_sk AS date_sk,
0075        ws_ext_sales_price AS sales_price,
0076        ws_net_profit AS profit,
0077        cast(0 AS DECIMAL(7, 2)) AS return_amt,
0078        cast(0 AS DECIMAL(7, 2)) AS net_loss
0079      FROM web_sales
0080      UNION ALL
0081      SELECT
0082        ws_web_site_sk AS wsr_web_site_sk,
0083        wr_returned_date_sk AS date_sk,
0084        cast(0 AS DECIMAL(7, 2)) AS sales_price,
0085        cast(0 AS DECIMAL(7, 2)) AS profit,
0086        wr_return_amt AS return_amt,
0087        wr_net_loss AS net_loss
0088      FROM web_returns
0089        LEFT OUTER JOIN web_sales ON
0090                                    (wr_item_sk = ws_item_sk
0091                                      AND wr_order_number = ws_order_number)
0092     ) salesreturns, date_dim, web_site
0093   WHERE date_sk = d_date_sk
0094     AND d_date BETWEEN cast('2000-08-23' AS DATE)
0095   AND ((cast('2000-08-23' AS DATE) + INTERVAL 14 days))
0096     AND wsr_web_site_sk = web_site_sk
0097   GROUP BY web_site_id)
0098 SELECT
0099   channel,
0100   id,
0101   sum(sales) AS sales,
0102   sum(returns) AS returns,
0103   sum(profit) AS profit
0104 FROM
0105   (SELECT
0106      'store channel' AS channel,
0107      concat('store', s_store_id) AS id,
0108      sales,
0109      returns,
0110      (profit - profit_loss) AS profit
0111    FROM ssr
0112    UNION ALL
0113    SELECT
0114      'catalog channel' AS channel,
0115      concat('catalog_page', cp_catalog_page_id) AS id,
0116      sales,
0117      returns,
0118      (profit - profit_loss) AS profit
0119    FROM csr
0120    UNION ALL
0121    SELECT
0122      'web channel' AS channel,
0123      concat('web_site', web_site_id) AS id,
0124      sales,
0125      returns,
0126      (profit - profit_loss) AS profit
0127    FROM wsr
0128   ) x
0129 GROUP BY ROLLUP (channel, id)
0130 ORDER BY channel, id
0131 LIMIT 100