123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- --!syntax_pg
- --TPC-DS Q23
- -- start query 1 in stream 0 using template ../query_templates/query23.tpl
- with frequent_ss_items as
- (select substr(i_item_desc,1,30) itemdesc,i_item_sk item_sk,d_date solddate,count(*) cnt
- from plato.store_sales
- ,plato.date_dim
- ,plato.item
- where ss_sold_date_sk = d_date_sk
- and ss_item_sk = i_item_sk
- and d_year in (1999,1999+1,1999+2,1999+3)
- group by substr(i_item_desc,1,30),i_item_sk,d_date
- having count(*) >4),
- max_store_sales as
- (select max(csales) tpcds_cmax
- from (select c_customer_sk,sum(ss_quantity::numeric*ss_sales_price) csales
- from plato.store_sales
- ,plato.customer
- ,plato.date_dim
- where ss_customer_sk = c_customer_sk
- and ss_sold_date_sk = d_date_sk
- and d_year in (1999,1999+1,1999+2,1999+3)
- group by c_customer_sk) a),
- best_ss_customer as
- (select c_customer_sk,sum(ss_quantity::numeric*ss_sales_price) ssales
- from plato.store_sales
- ,plato.customer
- where ss_customer_sk = c_customer_sk
- group by c_customer_sk
- having sum(ss_quantity::numeric*ss_sales_price) > (95.0/100.0)::numeric * (select
- *
- from
- max_store_sales)::numeric)
- select sum(sales)
- from (select cs_quantity::numeric*cs_list_price sales
- from plato.catalog_sales
- ,plato.date_dim
- where d_year = 1999
- and d_moy = 1
- and cs_sold_date_sk = d_date_sk
- and cs_item_sk in (select item_sk from frequent_ss_items)
- and cs_bill_customer_sk in (select c_customer_sk from best_ss_customer)
- union all
- select ws_quantity::numeric*ws_list_price sales
- from plato.web_sales
- ,plato.date_dim
- where d_year = 1999
- and d_moy = 1
- and ws_sold_date_sk = d_date_sk
- and ws_item_sk in (select item_sk from frequent_ss_items)
- and ws_bill_customer_sk in (select c_customer_sk from best_ss_customer)) a
- limit 100;
- with frequent_ss_items as
- (select substr(i_item_desc,1,30) itemdesc,i_item_sk item_sk,d_date solddate,count(*) cnt
- from plato.store_sales
- ,plato.date_dim
- ,plato.item
- where ss_sold_date_sk = d_date_sk
- and ss_item_sk = i_item_sk
- and d_year in (1999,1999 + 1,1999 + 2,1999 + 3)
- group by substr(i_item_desc,1,30),i_item_sk,d_date
- having count(*) >4),
- max_store_sales as
- (select max(csales) tpcds_cmax
- from (select c_customer_sk,sum(ss_quantity::numeric*ss_sales_price) csales
- from plato.store_sales
- ,plato.customer
- ,plato.date_dim
- where ss_customer_sk = c_customer_sk
- and ss_sold_date_sk = d_date_sk
- and d_year in (1999,1999+1,1999+2,1999+3)
- group by c_customer_sk) a),
- best_ss_customer as
- (select c_customer_sk,sum(ss_quantity::numeric*ss_sales_price) ssales
- from plato.store_sales
- ,plato.customer
- where ss_customer_sk = c_customer_sk
- group by c_customer_sk
- having sum(ss_quantity::numeric*ss_sales_price) > (95.0/100.0)::numeric * (select
- *
- from max_store_sales)::numeric)
- select c_last_name,c_first_name,sales
- from (select c_last_name,c_first_name,sum(cs_quantity::numeric*cs_list_price) sales
- from plato.catalog_sales
- ,plato.customer
- ,plato.date_dim
- where d_year = 1999
- and d_moy = 1
- and cs_sold_date_sk = d_date_sk
- and cs_item_sk in (select item_sk from frequent_ss_items)
- and cs_bill_customer_sk in (select c_customer_sk from best_ss_customer)
- and cs_bill_customer_sk = c_customer_sk
- group by c_last_name,c_first_name
- union all
- select c_last_name,c_first_name,sum(ws_quantity::numeric*ws_list_price) sales
- from plato.web_sales
- ,plato.customer
- ,plato.date_dim
- where d_year = 1999
- and d_moy = 1
- and ws_sold_date_sk = d_date_sk
- and ws_item_sk in (select item_sk from frequent_ss_items)
- and ws_bill_customer_sk in (select c_customer_sk from best_ss_customer)
- and ws_bill_customer_sk = c_customer_sk
- group by c_last_name,c_first_name) a
- order by c_last_name,c_first_name,sales
- limit 100;
- -- end query 1 in stream 0 using template ../query_templates/query23.tpl
|