blob: b87cf3a44827b1757e12f2f6186fe87db7c46d9b [file] [log] [blame]
WITH ssr AS
( SELECT
s_store_id,
sum(sales_price) AS sales,
sum(profit) AS profit,
sum(return_amt) AS RETURNS,
sum(net_loss) AS profit_loss
FROM
(SELECT
ss_store_sk AS store_sk,
ss_sold_date_sk AS date_sk,
ss_ext_sales_price AS sales_price,
ss_net_profit AS profit,
cast(0 AS DECIMAL(7, 2)) AS return_amt,
cast(0 AS DECIMAL(7, 2)) AS net_loss
FROM store_sales
UNION ALL
SELECT
sr_store_sk AS store_sk,
sr_returned_date_sk AS date_sk,
cast(0 AS DECIMAL(7, 2)) AS sales_price,
cast(0 AS DECIMAL(7, 2)) AS profit,
sr_return_amt AS return_amt,
sr_net_loss AS net_loss
FROM store_returns)
salesreturns, date_dim, store
WHERE date_sk = d_date_sk
AND d_date BETWEEN cast('2000-08-23' AS DATE)
AND ((cast('2000-08-23' AS DATE) + INTERVAL 14 days))
AND store_sk = s_store_sk
GROUP BY s_store_id),
csr AS
( SELECT
cp_catalog_page_id,
sum(sales_price) AS sales,
sum(profit) AS profit,
sum(return_amt) AS RETURNS,
sum(net_loss) AS profit_loss
FROM
(SELECT
cs_catalog_page_sk AS page_sk,
cs_sold_date_sk AS date_sk,
cs_ext_sales_price AS sales_price,
cs_net_profit AS profit,
cast(0 AS DECIMAL(7, 2)) AS return_amt,
cast(0 AS DECIMAL(7, 2)) AS net_loss
FROM catalog_sales
UNION ALL
SELECT
cr_catalog_page_sk AS page_sk,
cr_returned_date_sk AS date_sk,
cast(0 AS DECIMAL(7, 2)) AS sales_price,
cast(0 AS DECIMAL(7, 2)) AS profit,
cr_return_amount AS return_amt,
cr_net_loss AS net_loss
FROM catalog_returns
) salesreturns, date_dim, catalog_page
WHERE date_sk = d_date_sk
AND d_date BETWEEN cast('2000-08-23' AS DATE)
AND ((cast('2000-08-23' AS DATE) + INTERVAL 14 days))
AND page_sk = cp_catalog_page_sk
GROUP BY cp_catalog_page_id)
,
wsr AS
( SELECT
web_site_id,
sum(sales_price) AS sales,
sum(profit) AS profit,
sum(return_amt) AS RETURNS,
sum(net_loss) AS profit_loss
FROM
(SELECT
ws_web_site_sk AS wsr_web_site_sk,
ws_sold_date_sk AS date_sk,
ws_ext_sales_price AS sales_price,
ws_net_profit AS profit,
cast(0 AS DECIMAL(7, 2)) AS return_amt,
cast(0 AS DECIMAL(7, 2)) AS net_loss
FROM web_sales
UNION ALL
SELECT
ws_web_site_sk AS wsr_web_site_sk,
wr_returned_date_sk AS date_sk,
cast(0 AS DECIMAL(7, 2)) AS sales_price,
cast(0 AS DECIMAL(7, 2)) AS profit,
wr_return_amt AS return_amt,
wr_net_loss AS net_loss
FROM web_returns
LEFT OUTER JOIN web_sales ON
(wr_item_sk = ws_item_sk
AND wr_order_number = ws_order_number)
) salesreturns, date_dim, web_site
WHERE date_sk = d_date_sk
AND d_date BETWEEN cast('2000-08-23' AS DATE)
AND ((cast('2000-08-23' AS DATE) + INTERVAL 14 days))
AND wsr_web_site_sk = web_site_sk
GROUP BY web_site_id)
SELECT
channel,
id,
sum(sales) AS sales,
sum(returns) AS returns,
sum(profit) AS profit
FROM
(SELECT
'store channel' AS channel,
concat('store', s_store_id) AS id,
sales,
returns,
(profit - profit_loss) AS profit
FROM ssr
UNION ALL
SELECT
'catalog channel' AS channel,
concat('catalog_page', cp_catalog_page_id) AS id,
sales,
returns,
(profit - profit_loss) AS profit
FROM csr
UNION ALL
SELECT
'web channel' AS channel,
concat('web_site', web_site_id) AS id,
sales,
returns,
(profit - profit_loss) AS profit
FROM wsr
) x
GROUP BY ROLLUP (channel, id)
ORDER BY channel, id
LIMIT 100