Back to home page

OSCL-LXR

 
 

    


0001 WITH ss AS
0002 (SELECT
0003     s_store_sk,
0004     sum(ss_ext_sales_price) AS sales,
0005     sum(ss_net_profit) AS profit
0006   FROM store_sales, date_dim, store
0007   WHERE ss_sold_date_sk = d_date_sk
0008     AND d_date BETWEEN cast('2000-08-03' AS DATE) AND
0009   (cast('2000-08-03' AS DATE) + INTERVAL 30 days)
0010     AND ss_store_sk = s_store_sk
0011   GROUP BY s_store_sk),
0012     sr AS
0013   (SELECT
0014     s_store_sk,
0015     sum(sr_return_amt) AS returns,
0016     sum(sr_net_loss) AS profit_loss
0017   FROM store_returns, date_dim, store
0018   WHERE sr_returned_date_sk = d_date_sk
0019     AND d_date BETWEEN cast('2000-08-03' AS DATE) AND
0020   (cast('2000-08-03' AS DATE) + INTERVAL 30 days)
0021     AND sr_store_sk = s_store_sk
0022   GROUP BY s_store_sk),
0023     cs AS
0024   (SELECT
0025     cs_call_center_sk,
0026     sum(cs_ext_sales_price) AS sales,
0027     sum(cs_net_profit) AS profit
0028   FROM catalog_sales, date_dim
0029   WHERE cs_sold_date_sk = d_date_sk
0030     AND d_date BETWEEN cast('2000-08-03' AS DATE) AND
0031   (cast('2000-08-03' AS DATE) + INTERVAL 30 days)
0032   GROUP BY cs_call_center_sk),
0033     cr AS
0034   (SELECT
0035     sum(cr_return_amount) AS returns,
0036     sum(cr_net_loss) AS profit_loss
0037   FROM catalog_returns, date_dim
0038   WHERE cr_returned_date_sk = d_date_sk
0039     AND d_date BETWEEN cast('2000-08-03' AS DATE) AND
0040   (cast('2000-08-03' AS DATE) + INTERVAL 30 days)),
0041     ws AS
0042   (SELECT
0043     wp_web_page_sk,
0044     sum(ws_ext_sales_price) AS sales,
0045     sum(ws_net_profit) AS profit
0046   FROM web_sales, date_dim, web_page
0047   WHERE ws_sold_date_sk = d_date_sk
0048     AND d_date BETWEEN cast('2000-08-03' AS DATE) AND
0049   (cast('2000-08-03' AS DATE) + INTERVAL 30 days)
0050     AND ws_web_page_sk = wp_web_page_sk
0051   GROUP BY wp_web_page_sk),
0052     wr AS
0053   (SELECT
0054     wp_web_page_sk,
0055     sum(wr_return_amt) AS returns,
0056     sum(wr_net_loss) AS profit_loss
0057   FROM web_returns, date_dim, web_page
0058   WHERE wr_returned_date_sk = d_date_sk
0059     AND d_date BETWEEN cast('2000-08-03' AS DATE) AND
0060   (cast('2000-08-03' AS DATE) + INTERVAL 30 days)
0061     AND wr_web_page_sk = wp_web_page_sk
0062   GROUP BY wp_web_page_sk)
0063 SELECT
0064   channel,
0065   id,
0066   sum(sales) AS sales,
0067   sum(returns) AS returns,
0068   sum(profit) AS profit
0069 FROM
0070   (SELECT
0071      'store channel' AS channel,
0072      ss.s_store_sk AS id,
0073      sales,
0074      coalesce(returns, 0) AS returns,
0075      (profit - coalesce(profit_loss, 0)) AS profit
0076    FROM ss
0077      LEFT JOIN sr
0078        ON ss.s_store_sk = sr.s_store_sk
0079    UNION ALL
0080    SELECT
0081      'catalog channel' AS channel,
0082      cs_call_center_sk AS id,
0083      sales,
0084      returns,
0085      (profit - profit_loss) AS profit
0086    FROM cs, cr
0087    UNION ALL
0088    SELECT
0089      'web channel' AS channel,
0090      ws.wp_web_page_sk AS id,
0091      sales,
0092      coalesce(returns, 0) returns,
0093      (profit - coalesce(profit_loss, 0)) AS profit
0094    FROM ws
0095      LEFT JOIN wr
0096        ON ws.wp_web_page_sk = wr.wp_web_page_sk
0097   ) x
0098 GROUP BY ROLLUP (channel, id)
0099 ORDER BY channel, id
0100 LIMIT 100