123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- --!syntax_pg
- --TPC-DS Q49
- -- start query 1 in stream 0 using template ../query_templates/query49.tpl
- select channel, item, return_ratio, return_rank, currency_rank from
- (select
- 'web' as channel
- ,web.item
- ,web.return_ratio
- ,web.return_rank
- ,web.currency_rank
- from (
- select
- item
- ,return_ratio
- ,currency_ratio
- ,rank() over (order by return_ratio) as return_rank
- ,rank() over (order by currency_ratio) as currency_rank
- from
- ( select ws.ws_item_sk as item
- ,(cast(sum(coalesce(wr.wr_return_quantity,0)) as decimal(15,4))/
- cast(sum(coalesce(ws.ws_quantity,0)) as decimal(15,4) )) as return_ratio
- ,(cast(sum(coalesce(wr.wr_return_amt,0::numeric)) as decimal(15,4))/
- cast(sum(coalesce(ws.ws_net_paid,0::numeric)) as decimal(15,4) )) as currency_ratio
- from
- plato.web_sales ws left outer join plato.web_returns wr
- on (ws.ws_order_number = wr.wr_order_number and
- ws.ws_item_sk = wr.wr_item_sk)
- ,plato.date_dim
- where
- wr.wr_return_amt > 10000::numeric
- and ws.ws_net_profit > 1::numeric
- and ws.ws_net_paid > 0::numeric
- and ws.ws_quantity > 0
- and ws_sold_date_sk = d_date_sk
- and d_year = 2000
- and d_moy = 12
- group by ws.ws_item_sk
- ) in_web
- ) web
- where
- (
- web.return_rank <= 10
- or
- web.currency_rank <= 10
- )
- union
- select
- 'catalog' as channel
- ,catalog.item
- ,catalog.return_ratio
- ,catalog.return_rank
- ,catalog.currency_rank
- from (
- select
- item
- ,return_ratio
- ,currency_ratio
- ,rank() over (order by return_ratio) as return_rank
- ,rank() over (order by currency_ratio) as currency_rank
- from
- ( select
- cs.cs_item_sk as item
- ,(cast(sum(coalesce(cr.cr_return_quantity,0)) as decimal(15,4))/
- cast(sum(coalesce(cs.cs_quantity,0)) as decimal(15,4) )) as return_ratio
- ,(cast(sum(coalesce(cr.cr_return_amount,0::numeric)) as decimal(15,4))/
- cast(sum(coalesce(cs.cs_net_paid,0::numeric)) as decimal(15,4) )) as currency_ratio
- from
- plato.catalog_sales cs left outer join plato.catalog_returns cr
- on (cs.cs_order_number = cr.cr_order_number and
- cs.cs_item_sk = cr.cr_item_sk)
- ,plato.date_dim
- where
- cr.cr_return_amount > 10000::numeric
- and cs.cs_net_profit > 1::numeric
- and cs.cs_net_paid > 0::numeric
- and cs.cs_quantity > 0
- and cs_sold_date_sk = d_date_sk
- and d_year = 2000
- and d_moy = 12
- group by cs.cs_item_sk
- ) in_cat
- ) catalog
- where
- (
- catalog.return_rank <= 10
- or
- catalog.currency_rank <=10
- )
- union
- select
- 'store' as channel
- ,store.item
- ,store.return_ratio
- ,store.return_rank
- ,store.currency_rank
- from (
- select
- item
- ,return_ratio
- ,currency_ratio
- ,rank() over (order by return_ratio) as return_rank
- ,rank() over (order by currency_ratio) as currency_rank
- from
- ( select sts.ss_item_sk as item
- ,(cast(sum(coalesce(sr.sr_return_quantity,0)) as decimal(15,4))/cast(sum(coalesce(sts.ss_quantity,0)) as decimal(15,4) )) as return_ratio
- ,(cast(sum(coalesce(sr.sr_return_amt,0::numeric)) as decimal(15,4))/cast(sum(coalesce(sts.ss_net_paid,0::numeric)) as decimal(15,4) )) as currency_ratio
- from
- plato.store_sales sts left outer join plato.store_returns sr
- on (sts.ss_ticket_number = sr.sr_ticket_number and sts.ss_item_sk = sr.sr_item_sk)
- ,plato.date_dim
- where
- sr.sr_return_amt > 10000::numeric
- and sts.ss_net_profit > 1::numeric
- and sts.ss_net_paid > 0::numeric
- and sts.ss_quantity > 0
- and ss_sold_date_sk = d_date_sk
- and d_year = 2000
- and d_moy = 12
- group by sts.ss_item_sk
- ) in_store
- ) store
- where (
- store.return_rank <= 10
- or
- store.currency_rank <= 10
- )
- ) a
- order by 1,4,5,2
- limit 100;
- -- end query 1 in stream 0 using template ../query_templates/query49.tpl
|