should be it
This commit is contained in:
112
external/duckdb/extension/tpcds/dsdgen/queries/05.sql
vendored
Normal file
112
external/duckdb/extension/tpcds/dsdgen/queries/05.sql
vendored
Normal file
@@ -0,0 +1,112 @@
|
||||
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-09-06' AS date)
|
||||
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-09-06' AS date)
|
||||
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-09-06' AS date)
|
||||
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 NULLS FIRST,
|
||||
id NULLS FIRST
|
||||
LIMIT 100;
|
||||
Reference in New Issue
Block a user