Back to home page

OSCL-LXR

 
 

    


0001 -- This is a new query in TPCDS v2.7
0002 WITH web_tv as (
0003     select
0004       ws_item_sk item_sk,
0005       d_date,
0006       sum(ws_sales_price) sumws,
0007       row_number() over (partition by ws_item_sk order by d_date) rk
0008     from
0009       web_sales, date_dim
0010     where
0011       ws_sold_date_sk=d_date_sk
0012         and d_month_seq between 1212 and 1212 + 11
0013         and ws_item_sk is not NULL
0014     group by
0015       ws_item_sk, d_date),
0016 web_v1 as (
0017     select
0018       v1.item_sk,
0019       v1.d_date,
0020       v1.sumws,
0021       sum(v2.sumws) cume_sales
0022     from
0023       web_tv v1, web_tv v2
0024     where
0025       v1.item_sk = v2.item_sk
0026         and v1.rk >= v2.rk
0027     group by
0028       v1.item_sk,
0029       v1.d_date,
0030       v1.sumws),
0031 store_tv as (
0032     select
0033       ss_item_sk item_sk,
0034       d_date,
0035       sum(ss_sales_price) sumss,
0036       row_number() over (partition by ss_item_sk order by d_date) rk
0037     from
0038       store_sales, date_dim
0039     where
0040       ss_sold_date_sk = d_date_sk
0041         and d_month_seq between 1212 and 1212 + 11
0042         and ss_item_sk is not NULL
0043     group by ss_item_sk, d_date),
0044 store_v1 as (
0045     select
0046       v1.item_sk,
0047       v1.d_date,
0048       v1.sumss,
0049       sum(v2.sumss) cume_sales
0050     from
0051       store_tv v1, store_tv v2
0052     where
0053       v1.item_sk = v2.item_sk
0054         and v1.rk >= v2.rk
0055     group by
0056       v1.item_sk,
0057       v1.d_date,
0058       v1.sumss),
0059 v as (
0060     select
0061       item_sk,
0062       d_date,
0063       web_sales,
0064       store_sales,
0065       row_number() over (partition by item_sk order by d_date) rk
0066     from (
0067         select
0068           case when web.item_sk is not null
0069             then web.item_sk
0070             else store.item_sk end item_sk,
0071           case when web.d_date is not null
0072             then web.d_date
0073             else store.d_date end d_date,
0074           web.cume_sales web_sales,
0075           store.cume_sales store_sales
0076         from
0077           web_v1 web full outer join store_v1 store
0078             on (web.item_sk = store.item_sk and web.d_date = store.d_date)))
0079 select *
0080 from (
0081     select
0082       v1.item_sk,
0083       v1.d_date,
0084       v1.web_sales,
0085       v1.store_sales,
0086       max(v2.web_sales) web_cumulative,
0087       max(v2.store_sales) store_cumulative
0088     from
0089       v v1, v v2
0090     where
0091       v1.item_sk = v2.item_sk
0092         and v1.rk >= v2.rk
0093     group by
0094       v1.item_sk,
0095       v1.d_date,
0096       v1.web_sales,
0097       v1.store_sales) x
0098 where
0099   web_cumulative > store_cumulative
0100 order by
0101   item_sk,
0102   d_date
0103 limit 100