54 lines
2.0 KiB
SQL
54 lines
2.0 KiB
SQL
WITH web_v1 AS
|
|
(SELECT ws_item_sk item_sk,
|
|
d_date,
|
|
sum(sum(ws_sales_price)) OVER (PARTITION BY ws_item_sk
|
|
ORDER BY d_date ROWS BETWEEN unbounded preceding AND CURRENT ROW) cume_sales
|
|
FROM web_sales,
|
|
date_dim
|
|
WHERE ws_sold_date_sk=d_date_sk
|
|
AND d_month_seq BETWEEN 1200 AND 1200+11
|
|
AND ws_item_sk IS NOT NULL
|
|
GROUP BY ws_item_sk,
|
|
d_date),
|
|
store_v1 AS
|
|
(SELECT ss_item_sk item_sk,
|
|
d_date,
|
|
sum(sum(ss_sales_price)) OVER (PARTITION BY ss_item_sk
|
|
ORDER BY d_date ROWS BETWEEN unbounded preceding AND CURRENT ROW) cume_sales
|
|
FROM store_sales,
|
|
date_dim
|
|
WHERE ss_sold_date_sk=d_date_sk
|
|
AND d_month_seq BETWEEN 1200 AND 1200+11
|
|
AND ss_item_sk IS NOT NULL
|
|
GROUP BY ss_item_sk,
|
|
d_date)
|
|
SELECT *
|
|
FROM
|
|
(SELECT item_sk,
|
|
d_date,
|
|
web_sales,
|
|
store_sales,
|
|
max(web_sales) OVER (PARTITION BY item_sk
|
|
ORDER BY d_date ROWS BETWEEN unbounded preceding AND CURRENT ROW) web_cumulative,
|
|
max(store_sales) OVER (PARTITION BY item_sk
|
|
ORDER BY d_date ROWS BETWEEN unbounded preceding AND CURRENT ROW) store_cumulative
|
|
FROM
|
|
(SELECT CASE
|
|
WHEN web.item_sk IS NOT NULL THEN web.item_sk
|
|
ELSE store.item_sk
|
|
END item_sk,
|
|
CASE
|
|
WHEN web.d_date IS NOT NULL THEN web.d_date
|
|
ELSE store.d_date
|
|
END d_date,
|
|
web.cume_sales web_sales,
|
|
store.cume_sales store_sales
|
|
FROM web_v1 web
|
|
FULL OUTER JOIN store_v1 store ON (web.item_sk = store.item_sk
|
|
AND web.d_date = store.d_date))x)y
|
|
WHERE web_cumulative > store_cumulative
|
|
ORDER BY item_sk NULLS FIRST,
|
|
d_date NULLS FIRST
|
|
LIMIT 100;
|
|
|