Files
email-tracker/external/duckdb/extension/tpcds/dsdgen/queries/51.sql
2025-10-24 19:21:19 -05:00

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;