From 7423ff9d63bd147644814bed4f04842d469f0e45 Mon Sep 17 00:00:00 2001 From: Bruce Ritchie Date: Sat, 23 May 2026 12:18:33 -0400 Subject: [PATCH] Update all tpc-ds queries: - formatting updates - fixed queries returning empty results - fixed a few queries that did not match the shape/fields from the tpc-ds 3.1.0 spec (query 44, query 49) --- datafusion/core/tests/tpc-ds/1.sql | 50 ++- datafusion/core/tests/tpc-ds/10.sql | 135 ++++--- datafusion/core/tests/tpc-ds/11.sql | 170 ++++----- datafusion/core/tests/tpc-ds/12.sql | 57 ++- datafusion/core/tests/tpc-ds/13.sql | 111 +++--- datafusion/core/tests/tpc-ds/14.sql | 428 +++++++++++----------- datafusion/core/tests/tpc-ds/15.sql | 48 +-- datafusion/core/tests/tpc-ds/16.sql | 67 ++-- datafusion/core/tests/tpc-ds/17.sql | 88 +++-- datafusion/core/tests/tpc-ds/18.sql | 71 ++-- datafusion/core/tests/tpc-ds/19.sql | 47 ++- datafusion/core/tests/tpc-ds/2.sql | 130 +++---- datafusion/core/tests/tpc-ds/20.sql | 53 ++- datafusion/core/tests/tpc-ds/21.sql | 68 ++-- datafusion/core/tests/tpc-ds/22.sql | 31 +- datafusion/core/tests/tpc-ds/23.sql | 233 ++++++------ datafusion/core/tests/tpc-ds/24.sql | 196 +++++----- datafusion/core/tests/tpc-ds/25.sql | 87 ++--- datafusion/core/tests/tpc-ds/26.sql | 43 ++- datafusion/core/tests/tpc-ds/27.sql | 47 ++- datafusion/core/tests/tpc-ds/28.sql | 142 +++++--- datafusion/core/tests/tpc-ds/29.sql | 85 ++--- datafusion/core/tests/tpc-ds/3.sql | 37 +- datafusion/core/tests/tpc-ds/30.sql | 84 +++-- datafusion/core/tests/tpc-ds/31.sql | 116 +++--- datafusion/core/tests/tpc-ds/32.sql | 48 +-- datafusion/core/tests/tpc-ds/33.sql | 135 +++---- datafusion/core/tests/tpc-ds/34.sql | 85 +++-- datafusion/core/tests/tpc-ds/35.sql | 127 ++++--- datafusion/core/tests/tpc-ds/36.sql | 56 ++- datafusion/core/tests/tpc-ds/37.sql | 34 +- datafusion/core/tests/tpc-ds/38.sql | 50 +-- datafusion/core/tests/tpc-ds/39.sql | 148 +++++--- datafusion/core/tests/tpc-ds/4.sql | 276 ++++++++------ datafusion/core/tests/tpc-ds/40.sql | 64 ++-- datafusion/core/tests/tpc-ds/41.sql | 124 ++++--- datafusion/core/tests/tpc-ds/42.sql | 35 +- datafusion/core/tests/tpc-ds/43.sql | 49 ++- datafusion/core/tests/tpc-ds/44.sql | 96 +++-- datafusion/core/tests/tpc-ds/45.sql | 52 +-- datafusion/core/tests/tpc-ds/46.sql | 69 ++-- datafusion/core/tests/tpc-ds/47.sql | 121 +++--- datafusion/core/tests/tpc-ds/48.sql | 116 +++--- datafusion/core/tests/tpc-ds/49.sql | 275 +++++++------- datafusion/core/tests/tpc-ds/5.sql | 275 +++++++------- datafusion/core/tests/tpc-ds/50.sql | 138 ++++--- datafusion/core/tests/tpc-ds/51.sql | 118 +++--- datafusion/core/tests/tpc-ds/52.sql | 39 +- datafusion/core/tests/tpc-ds/53.sql | 91 +++-- datafusion/core/tests/tpc-ds/54.sql | 114 +++--- datafusion/core/tests/tpc-ds/55.sql | 27 +- datafusion/core/tests/tpc-ds/56.sql | 138 ++++--- datafusion/core/tests/tpc-ds/57.sql | 113 +++--- datafusion/core/tests/tpc-ds/58.sql | 134 +++---- datafusion/core/tests/tpc-ds/59.sql | 113 +++--- datafusion/core/tests/tpc-ds/6.sql | 44 +-- datafusion/core/tests/tpc-ds/60.sql | 135 +++---- datafusion/core/tests/tpc-ds/61.sql | 85 ++--- datafusion/core/tests/tpc-ds/62.sql | 84 +++-- datafusion/core/tests/tpc-ds/63.sql | 90 +++-- datafusion/core/tests/tpc-ds/64.sql | 240 ++++++------ datafusion/core/tests/tpc-ds/65.sql | 61 ++-- datafusion/core/tests/tpc-ds/66.sql | 478 +++++++++++++----------- datafusion/core/tests/tpc-ds/67.sql | 104 +++--- datafusion/core/tests/tpc-ds/68.sql | 85 +++-- datafusion/core/tests/tpc-ds/69.sql | 105 +++--- datafusion/core/tests/tpc-ds/7.sql | 43 ++- datafusion/core/tests/tpc-ds/70.sql | 78 ++-- datafusion/core/tests/tpc-ds/71.sql | 85 ++--- datafusion/core/tests/tpc-ds/72.sql | 60 +-- datafusion/core/tests/tpc-ds/73.sql | 68 ++-- datafusion/core/tests/tpc-ds/74.sql | 127 +++---- datafusion/core/tests/tpc-ds/75.sql | 158 ++++---- datafusion/core/tests/tpc-ds/76.sql | 70 ++-- datafusion/core/tests/tpc-ds/77.sql | 221 +++++------ datafusion/core/tests/tpc-ds/78.sql | 147 +++++--- datafusion/core/tests/tpc-ds/79.sql | 52 +-- datafusion/core/tests/tpc-ds/8.sql | 547 ++++++++++++++++++++++------ datafusion/core/tests/tpc-ds/80.sql | 207 ++++++----- datafusion/core/tests/tpc-ds/81.sql | 91 +++-- datafusion/core/tests/tpc-ds/82.sql | 34 +- datafusion/core/tests/tpc-ds/83.sql | 137 +++---- datafusion/core/tests/tpc-ds/84.sql | 44 +-- datafusion/core/tests/tpc-ds/85.sql | 147 ++++---- datafusion/core/tests/tpc-ds/86.sql | 50 ++- datafusion/core/tests/tpc-ds/87.sql | 53 +-- datafusion/core/tests/tpc-ds/88.sql | 295 ++++++++++----- datafusion/core/tests/tpc-ds/89.sql | 72 ++-- datafusion/core/tests/tpc-ds/9.sql | 126 ++++--- datafusion/core/tests/tpc-ds/90.sql | 50 +-- datafusion/core/tests/tpc-ds/91.sql | 60 ++- datafusion/core/tests/tpc-ds/92.sql | 51 +-- datafusion/core/tests/tpc-ds/93.sql | 42 ++- datafusion/core/tests/tpc-ds/94.sql | 57 ++- datafusion/core/tests/tpc-ds/95.sql | 62 ++-- datafusion/core/tests/tpc-ds/96.sql | 30 +- datafusion/core/tests/tpc-ds/97.sql | 62 ++-- datafusion/core/tests/tpc-ds/98.sql | 55 ++- datafusion/core/tests/tpc-ds/99.sql | 84 +++-- 99 files changed, 5915 insertions(+), 4945 deletions(-) diff --git a/datafusion/core/tests/tpc-ds/1.sql b/datafusion/core/tests/tpc-ds/1.sql index b90411d0434af..7b195d31fe796 100644 --- a/datafusion/core/tests/tpc-ds/1.sql +++ b/datafusion/core/tests/tpc-ds/1.sql @@ -1,26 +1,24 @@ --- Copyright 2015 Transaction Processing Performance Council - -with customer_total_return as -(select sr_customer_sk as ctr_customer_sk -,sr_store_sk as ctr_store_sk -,sum(SR_FEE) as ctr_total_return -from store_returns -,date_dim -where sr_returned_date_sk = d_date_sk -and d_year =2000 -group by sr_customer_sk -,sr_store_sk) - select c_customer_id -from customer_total_return ctr1 -,store -,customer -where ctr1.ctr_total_return > (select avg(ctr_total_return)*1.2 -from customer_total_return ctr2 -where ctr1.ctr_store_sk = ctr2.ctr_store_sk) -and s_store_sk = ctr1.ctr_store_sk -and s_state = 'SD' -and ctr1.ctr_customer_sk = c_customer_sk -order by c_customer_id -limit 100; - - +WITH + customer_total_return AS ( + SELECT + sr_customer_sk AS ctr_customer_sk, + sr_store_sk AS ctr_store_sk, + sum(sr_return_amt) AS ctr_total_return + FROM store_returns, date_dim + WHERE sr_returned_date_sk = d_date_sk AND d_year = 2000 + GROUP BY sr_customer_sk, sr_store_sk + ) +SELECT c_customer_id +FROM customer_total_return ctr1, store, customer +WHERE + ctr1.ctr_total_return > ( + SELECT avg(ctr_total_return) * 1.2 + FROM customer_total_return ctr2 + WHERE ctr1.ctr_store_sk = ctr2.ctr_store_sk + ) + AND s_store_sk = ctr1.ctr_store_sk + AND s_state = 'TN' + AND ctr1.ctr_customer_sk = c_customer_sk +ORDER BY c_customer_id +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/10.sql b/datafusion/core/tests/tpc-ds/10.sql index 37111a7c1bde0..ea94fd9fb7696 100644 --- a/datafusion/core/tests/tpc-ds/10.sql +++ b/datafusion/core/tests/tpc-ds/10.sql @@ -1,60 +1,75 @@ --- Copyright 2015 Transaction Processing Performance Council - -select - cd_gender, - cd_marital_status, - cd_education_status, - count(*) cnt1, - cd_purchase_estimate, - count(*) cnt2, - cd_credit_rating, - count(*) cnt3, - cd_dep_count, - count(*) cnt4, - cd_dep_employed_count, - count(*) cnt5, - cd_dep_college_count, - count(*) cnt6 - from - customer c,customer_address ca,customer_demographics - where - c.c_current_addr_sk = ca.ca_address_sk and - ca_county in ('Walker County','Richland County','Gaines County','Douglas County','Dona Ana County') and - cd_demo_sk = c.c_current_cdemo_sk and - exists (select * - from store_sales,date_dim - where c.c_customer_sk = ss_customer_sk and - ss_sold_date_sk = d_date_sk and - d_year = 2002 and - d_moy between 4 and 4+3) and - (exists (select * - from web_sales,date_dim - where c.c_customer_sk = ws_bill_customer_sk and - ws_sold_date_sk = d_date_sk and - d_year = 2002 and - d_moy between 4 ANd 4+3) or - exists (select * - from catalog_sales,date_dim - where c.c_customer_sk = cs_ship_customer_sk and - cs_sold_date_sk = d_date_sk and - d_year = 2002 and - d_moy between 4 and 4+3)) - group by cd_gender, - cd_marital_status, - cd_education_status, - cd_purchase_estimate, - cd_credit_rating, - cd_dep_count, - cd_dep_employed_count, - cd_dep_college_count - order by cd_gender, - cd_marital_status, - cd_education_status, - cd_purchase_estimate, - cd_credit_rating, - cd_dep_count, - cd_dep_employed_count, - cd_dep_college_count -limit 100; - - +SELECT + cd_gender, + cd_marital_status, + cd_education_status, + count(*) cnt1, + cd_purchase_estimate, + count(*) cnt2, + cd_credit_rating, + count(*) cnt3, + cd_dep_count, + count(*) cnt4, + cd_dep_employed_count, + count(*) cnt5, + cd_dep_college_count, + count(*) cnt6 +FROM customer c, customer_address ca, customer_demographics +WHERE + c.c_current_addr_sk = ca.ca_address_sk + AND ca_county IN ( + 'Rush County', + 'Toole County', + 'Jefferson County', + 'Dona Ana County', + 'La Porte County' + ) + AND cd_demo_sk = c.c_current_cdemo_sk + AND exists ( + SELECT * + FROM store_sales, date_dim + WHERE + c.c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_moy BETWEEN 1 AND 1 + 3 + ) + AND ( + exists ( + SELECT * + FROM web_sales, date_dim + WHERE + c.c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_moy BETWEEN 1 AND 1 + 3 + ) + OR exists ( + SELECT * + FROM catalog_sales, date_dim + WHERE + c.c_customer_sk = cs_ship_customer_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_moy BETWEEN 1 AND 1 + 3 + ) + ) +GROUP BY + cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +ORDER BY + cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/11.sql b/datafusion/core/tests/tpc-ds/11.sql index 776ee37125295..50ceb4ad4305c 100644 --- a/datafusion/core/tests/tpc-ds/11.sql +++ b/datafusion/core/tests/tpc-ds/11.sql @@ -1,82 +1,88 @@ --- Copyright 2015 Transaction Processing Performance Council - -with year_total as ( - select c_customer_id customer_id - ,c_first_name customer_first_name - ,c_last_name customer_last_name - ,c_preferred_cust_flag customer_preferred_cust_flag - ,c_birth_country customer_birth_country - ,c_login customer_login - ,c_email_address customer_email_address - ,d_year dyear - ,sum(ss_ext_list_price-ss_ext_discount_amt) year_total - ,'s' sale_type - from customer - ,store_sales - ,date_dim - where c_customer_sk = ss_customer_sk - and ss_sold_date_sk = d_date_sk - group by c_customer_id - ,c_first_name - ,c_last_name - ,c_preferred_cust_flag - ,c_birth_country - ,c_login - ,c_email_address - ,d_year - union all - select c_customer_id customer_id - ,c_first_name customer_first_name - ,c_last_name customer_last_name - ,c_preferred_cust_flag customer_preferred_cust_flag - ,c_birth_country customer_birth_country - ,c_login customer_login - ,c_email_address customer_email_address - ,d_year dyear - ,sum(ws_ext_list_price-ws_ext_discount_amt) year_total - ,'w' sale_type - from customer - ,web_sales - ,date_dim - where c_customer_sk = ws_bill_customer_sk - and ws_sold_date_sk = d_date_sk - group by c_customer_id - ,c_first_name - ,c_last_name - ,c_preferred_cust_flag - ,c_birth_country - ,c_login - ,c_email_address - ,d_year - ) - select - t_s_secyear.customer_id - ,t_s_secyear.customer_first_name - ,t_s_secyear.customer_last_name - ,t_s_secyear.customer_email_address - from year_total t_s_firstyear - ,year_total t_s_secyear - ,year_total t_w_firstyear - ,year_total t_w_secyear - where t_s_secyear.customer_id = t_s_firstyear.customer_id - and t_s_firstyear.customer_id = t_w_secyear.customer_id - and t_s_firstyear.customer_id = t_w_firstyear.customer_id - and t_s_firstyear.sale_type = 's' - and t_w_firstyear.sale_type = 'w' - and t_s_secyear.sale_type = 's' - and t_w_secyear.sale_type = 'w' - and t_s_firstyear.dyear = 2001 - and t_s_secyear.dyear = 2001+1 - and t_w_firstyear.dyear = 2001 - and t_w_secyear.dyear = 2001+1 - and t_s_firstyear.year_total > 0 - and t_w_firstyear.year_total > 0 - and case when t_w_firstyear.year_total > 0 then t_w_secyear.year_total / t_w_firstyear.year_total else 0.0 end - > case when t_s_firstyear.year_total > 0 then t_s_secyear.year_total / t_s_firstyear.year_total else 0.0 end - order by t_s_secyear.customer_id - ,t_s_secyear.customer_first_name - ,t_s_secyear.customer_last_name - ,t_s_secyear.customer_email_address -limit 100; - - +WITH + year_total AS ( + SELECT + c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum(ss_ext_list_price - ss_ext_discount_amt) year_total, + 's' sale_type + FROM customer, store_sales, date_dim + WHERE c_customer_sk = ss_customer_sk AND ss_sold_date_sk = d_date_sk + GROUP BY + c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year + UNION ALL + SELECT + c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum(ws_ext_list_price - ws_ext_discount_amt) year_total, + 'w' sale_type + FROM customer, web_sales, date_dim + WHERE c_customer_sk = ws_bill_customer_sk AND ws_sold_date_sk = d_date_sk + GROUP BY + c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year + ) +SELECT + t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name, + t_s_secyear.customer_preferred_cust_flag +FROM + year_total t_s_firstyear, + year_total t_s_secyear, + year_total t_w_firstyear, + year_total t_w_secyear +WHERE + t_s_secyear.customer_id = t_s_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_secyear.customer_id + AND t_s_firstyear.customer_id = t_w_firstyear.customer_id + AND t_s_firstyear.sale_type = 's' + AND t_w_firstyear.sale_type = 'w' + AND t_s_secyear.sale_type = 's' + AND t_w_secyear.sale_type = 'w' + AND t_s_firstyear.dyear = 2001 + AND t_s_secyear.dyear = 2001 + 1 + AND t_w_firstyear.dyear = 2001 + AND t_w_secyear.dyear = 2001 + 1 + AND t_s_firstyear.year_total > 0 + AND t_w_firstyear.year_total > 0 + AND CASE + WHEN t_w_firstyear.year_total > 0 + THEN t_w_secyear.year_total / t_w_firstyear.year_total + ELSE 0.0 + END > CASE + WHEN t_s_firstyear.year_total > 0 + THEN t_s_secyear.year_total / t_s_firstyear.year_total + ELSE 0.0 + END +ORDER BY + t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name, + t_s_secyear.customer_preferred_cust_flag +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/12.sql b/datafusion/core/tests/tpc-ds/12.sql index c624417595463..18fb6b343cdda 100644 --- a/datafusion/core/tests/tpc-ds/12.sql +++ b/datafusion/core/tests/tpc-ds/12.sql @@ -1,35 +1,22 @@ --- Copyright 2015 Transaction Processing Performance Council - -select i_item_id - ,i_item_desc - ,i_category - ,i_class - ,i_current_price - ,sum(ws_ext_sales_price) as itemrevenue - ,sum(ws_ext_sales_price)*100/sum(sum(ws_ext_sales_price)) over - (partition by i_class) as revenueratio -from - web_sales - ,item - ,date_dim -where - ws_item_sk = i_item_sk - and i_category in ('Jewelry', 'Sports', 'Books') - and ws_sold_date_sk = d_date_sk - and d_date between cast('2001-01-12' as date) - and cast('2001-01-12' as date) + INTERVAL '30 days' -group by - i_item_id - ,i_item_desc - ,i_category - ,i_class - ,i_current_price -order by - i_category - ,i_class - ,i_item_id - ,i_item_desc - ,revenueratio -limit 100; - - +SELECT + i_item_id, + i_item_desc, + i_category, + i_class, + i_current_price, + sum(ws_ext_sales_price) AS itemrevenue, + sum(ws_ext_sales_price) + * 100 + / sum(sum(ws_ext_sales_price)) OVER (PARTITION BY i_class) AS revenueratio +FROM web_sales, item, date_dim +WHERE + ws_item_sk = i_item_sk + AND i_category IN ('Sports', 'Books', 'Home') + AND ws_sold_date_sk = d_date_sk + AND d_date + BETWEEN cast('1999-02-22' AS date) AND cast('1999-02-22' AS date) + + INTERVAL '30 days' +GROUP BY i_item_id, i_item_desc, i_category, i_class, i_current_price +ORDER BY i_category, i_class, i_item_id, i_item_desc, revenueratio +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/13.sql b/datafusion/core/tests/tpc-ds/13.sql index d0b85b7b2121c..3499cba7f6035 100644 --- a/datafusion/core/tests/tpc-ds/13.sql +++ b/datafusion/core/tests/tpc-ds/13.sql @@ -1,53 +1,60 @@ --- Copyright 2015 Transaction Processing Performance Council - -select avg(ss_quantity) - ,avg(ss_ext_sales_price) - ,avg(ss_ext_wholesale_cost) - ,sum(ss_ext_wholesale_cost) - from store_sales - ,store - ,customer_demographics - ,household_demographics - ,customer_address - ,date_dim - where s_store_sk = ss_store_sk - and ss_sold_date_sk = d_date_sk and d_year = 2001 - and((ss_hdemo_sk=hd_demo_sk - and cd_demo_sk = ss_cdemo_sk - and cd_marital_status = 'D' - and cd_education_status = '2 yr Degree' - and ss_sales_price between 100.00 and 150.00 - and hd_dep_count = 3 - )or - (ss_hdemo_sk=hd_demo_sk - and cd_demo_sk = ss_cdemo_sk - and cd_marital_status = 'S' - and cd_education_status = 'Secondary' - and ss_sales_price between 50.00 and 100.00 - and hd_dep_count = 1 - ) or - (ss_hdemo_sk=hd_demo_sk - and cd_demo_sk = ss_cdemo_sk - and cd_marital_status = 'W' - and cd_education_status = 'Advanced Degree' - and ss_sales_price between 150.00 and 200.00 - and hd_dep_count = 1 - )) - and((ss_addr_sk = ca_address_sk - and ca_country = 'United States' - and ca_state in ('CO', 'IL', 'MN') - and ss_net_profit between 100 and 200 - ) or - (ss_addr_sk = ca_address_sk - and ca_country = 'United States' - and ca_state in ('OH', 'MT', 'NM') - and ss_net_profit between 150 and 300 - ) or - (ss_addr_sk = ca_address_sk - and ca_country = 'United States' - and ca_state in ('TX', 'MO', 'MI') - and ss_net_profit between 50 and 250 - )) +SELECT avg(ss_quantity), + avg(ss_ext_sales_price), + avg(ss_ext_wholesale_cost), + sum(ss_ext_wholesale_cost) +FROM store_sales, + store, + customer_demographics, + household_demographics, + customer_address, + date_dim +WHERE s_store_sk = ss_store_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 + AND ( + ( + ss_hdemo_sk = hd_demo_sk + AND cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'M' + AND cd_education_status = 'Advanced Degree' + AND ss_sales_price BETWEEN 100.00 AND 150.00 + AND hd_dep_count = 3 + ) + OR ( + ss_hdemo_sk = hd_demo_sk + AND cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND ss_sales_price BETWEEN 50.00 AND 100.00 + AND hd_dep_count = 1 + ) + OR ( + ss_hdemo_sk = hd_demo_sk + AND cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'W' + AND cd_education_status = '2 yr Degree' + AND ss_sales_price BETWEEN 150.00 AND 200.00 + AND hd_dep_count = 1 + ) + ) + AND ( + ( + ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('TX', 'OH', 'TX') + AND ss_net_profit BETWEEN 100 AND 200 + ) + OR ( + ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('OR', 'NM', 'KY') + AND ss_net_profit BETWEEN 150 AND 300 + ) + OR ( + ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('VA', 'TX', 'MS') + AND ss_net_profit BETWEEN 50 AND 250 + ) + ) ; - - diff --git a/datafusion/core/tests/tpc-ds/14.sql b/datafusion/core/tests/tpc-ds/14.sql index 97af50bbbc84e..17a9d138f4bfc 100644 --- a/datafusion/core/tests/tpc-ds/14.sql +++ b/datafusion/core/tests/tpc-ds/14.sql @@ -1,211 +1,217 @@ --- Copyright 2015 Transaction Processing Performance Council - -with cross_items as - (select i_item_sk ss_item_sk - from item, - (select iss.i_brand_id brand_id - ,iss.i_class_id class_id - ,iss.i_category_id category_id - from store_sales - ,item iss - ,date_dim d1 - where ss_item_sk = iss.i_item_sk - and ss_sold_date_sk = d1.d_date_sk - and d1.d_year between 1998 AND 1998 + 2 - intersect - select ics.i_brand_id - ,ics.i_class_id - ,ics.i_category_id - from catalog_sales - ,item ics - ,date_dim d2 - where cs_item_sk = ics.i_item_sk - and cs_sold_date_sk = d2.d_date_sk - and d2.d_year between 1998 AND 1998 + 2 - intersect - select iws.i_brand_id - ,iws.i_class_id - ,iws.i_category_id - from web_sales - ,item iws - ,date_dim d3 - where ws_item_sk = iws.i_item_sk - and ws_sold_date_sk = d3.d_date_sk - and d3.d_year between 1998 AND 1998 + 2) - where i_brand_id = brand_id - and i_class_id = class_id - and i_category_id = category_id -), - avg_sales as - (select avg(quantity*list_price) average_sales - from (select ss_quantity quantity - ,ss_list_price list_price - from store_sales - ,date_dim - where ss_sold_date_sk = d_date_sk - and d_year between 1998 and 1998 + 2 - union all - select cs_quantity quantity - ,cs_list_price list_price - from catalog_sales - ,date_dim - where cs_sold_date_sk = d_date_sk - and d_year between 1998 and 1998 + 2 - union all - select ws_quantity quantity - ,ws_list_price list_price - from web_sales - ,date_dim - where ws_sold_date_sk = d_date_sk - and d_year between 1998 and 1998 + 2) x) - select channel, i_brand_id,i_class_id,i_category_id,sum(sales), sum(number_sales) - from( - select 'store' channel, i_brand_id,i_class_id - ,i_category_id,sum(ss_quantity*ss_list_price) sales - , count(*) number_sales - from store_sales - ,item - ,date_dim - where ss_item_sk in (select ss_item_sk from cross_items) - and ss_item_sk = i_item_sk - and ss_sold_date_sk = d_date_sk - and d_year = 1998+2 - and d_moy = 11 - group by i_brand_id,i_class_id,i_category_id - having sum(ss_quantity*ss_list_price) > (select average_sales from avg_sales) - union all - select 'catalog' channel, i_brand_id,i_class_id,i_category_id, sum(cs_quantity*cs_list_price) sales, count(*) number_sales - from catalog_sales - ,item - ,date_dim - where cs_item_sk in (select ss_item_sk from cross_items) - and cs_item_sk = i_item_sk - and cs_sold_date_sk = d_date_sk - and d_year = 1998+2 - and d_moy = 11 - group by i_brand_id,i_class_id,i_category_id - having sum(cs_quantity*cs_list_price) > (select average_sales from avg_sales) - union all - select 'web' channel, i_brand_id,i_class_id,i_category_id, sum(ws_quantity*ws_list_price) sales , count(*) number_sales - from web_sales - ,item - ,date_dim - where ws_item_sk in (select ss_item_sk from cross_items) - and ws_item_sk = i_item_sk - and ws_sold_date_sk = d_date_sk - and d_year = 1998+2 - and d_moy = 11 - group by i_brand_id,i_class_id,i_category_id - having sum(ws_quantity*ws_list_price) > (select average_sales from avg_sales) - ) y - group by rollup (channel, i_brand_id,i_class_id,i_category_id) - order by channel,i_brand_id,i_class_id,i_category_id - limit 100; -with cross_items as - (select i_item_sk ss_item_sk - from item, - (select iss.i_brand_id brand_id - ,iss.i_class_id class_id - ,iss.i_category_id category_id - from store_sales - ,item iss - ,date_dim d1 - where ss_item_sk = iss.i_item_sk - and ss_sold_date_sk = d1.d_date_sk - and d1.d_year between 1998 AND 1998 + 2 - intersect - select ics.i_brand_id - ,ics.i_class_id - ,ics.i_category_id - from catalog_sales - ,item ics - ,date_dim d2 - where cs_item_sk = ics.i_item_sk - and cs_sold_date_sk = d2.d_date_sk - and d2.d_year between 1998 AND 1998 + 2 - intersect - select iws.i_brand_id - ,iws.i_class_id - ,iws.i_category_id - from web_sales - ,item iws - ,date_dim d3 - where ws_item_sk = iws.i_item_sk - and ws_sold_date_sk = d3.d_date_sk - and d3.d_year between 1998 AND 1998 + 2) x - where i_brand_id = brand_id - and i_class_id = class_id - and i_category_id = category_id -), - avg_sales as -(select avg(quantity*list_price) average_sales - from (select ss_quantity quantity - ,ss_list_price list_price - from store_sales - ,date_dim - where ss_sold_date_sk = d_date_sk - and d_year between 1998 and 1998 + 2 - union all - select cs_quantity quantity - ,cs_list_price list_price - from catalog_sales - ,date_dim - where cs_sold_date_sk = d_date_sk - and d_year between 1998 and 1998 + 2 - union all - select ws_quantity quantity - ,ws_list_price list_price - from web_sales - ,date_dim - where ws_sold_date_sk = d_date_sk - and d_year between 1998 and 1998 + 2) x) - select this_year.channel ty_channel - ,this_year.i_brand_id ty_brand - ,this_year.i_class_id ty_class - ,this_year.i_category_id ty_category - ,this_year.sales ty_sales - ,this_year.number_sales ty_number_sales - ,last_year.channel ly_channel - ,last_year.i_brand_id ly_brand - ,last_year.i_class_id ly_class - ,last_year.i_category_id ly_category - ,last_year.sales ly_sales - ,last_year.number_sales ly_number_sales - from - (select 'store' channel, i_brand_id,i_class_id,i_category_id - ,sum(ss_quantity*ss_list_price) sales, count(*) number_sales - from store_sales - ,item - ,date_dim - where ss_item_sk in (select ss_item_sk from cross_items) - and ss_item_sk = i_item_sk - and ss_sold_date_sk = d_date_sk - and d_week_seq = (select d_week_seq - from date_dim - where d_year = 1998 + 1 - and d_moy = 12 - and d_dom = 16) - group by i_brand_id,i_class_id,i_category_id - having sum(ss_quantity*ss_list_price) > (select average_sales from avg_sales)) this_year, - (select 'store' channel, i_brand_id,i_class_id - ,i_category_id, sum(ss_quantity*ss_list_price) sales, count(*) number_sales - from store_sales - ,item - ,date_dim - where ss_item_sk in (select ss_item_sk from cross_items) - and ss_item_sk = i_item_sk - and ss_sold_date_sk = d_date_sk - and d_week_seq = (select d_week_seq - from date_dim - where d_year = 1998 - and d_moy = 12 - and d_dom = 16) - group by i_brand_id,i_class_id,i_category_id - having sum(ss_quantity*ss_list_price) > (select average_sales from avg_sales)) last_year - where this_year.i_brand_id= last_year.i_brand_id - and this_year.i_class_id = last_year.i_class_id - and this_year.i_category_id = last_year.i_category_id - order by this_year.channel, this_year.i_brand_id, this_year.i_class_id, this_year.i_category_id - limit 100; - - +WITH + cross_items AS ( + SELECT i_item_sk ss_item_sk + FROM + item, + ( + SELECT + iss.i_brand_id brand_id, + iss.i_class_id class_id, + iss.i_category_id category_id + FROM store_sales, item iss, date_dim d1 + WHERE + ss_item_sk = iss.i_item_sk + AND ss_sold_date_sk = d1.d_date_sk + AND d1.d_year BETWEEN 1999 AND 1999 + 2 + intersect + SELECT ics.i_brand_id, ics.i_class_id, ics.i_category_id + FROM catalog_sales, item ics, date_dim d2 + WHERE + cs_item_sk = ics.i_item_sk + AND cs_sold_date_sk = d2.d_date_sk + AND d2.d_year BETWEEN 1999 AND 1999 + 2 + intersect + SELECT iws.i_brand_id, iws.i_class_id, iws.i_category_id + FROM web_sales, item iws, date_dim d3 + WHERE + ws_item_sk = iws.i_item_sk + AND ws_sold_date_sk = d3.d_date_sk + AND d3.d_year BETWEEN 1999 AND 1999 + 2 + ) + WHERE + i_brand_id = brand_id + AND i_class_id = class_id + AND i_category_id = category_id + ), + avg_sales AS ( + SELECT avg(quantity * list_price) average_sales + FROM + ( + SELECT ss_quantity quantity, ss_list_price list_price + FROM store_sales, date_dim + WHERE ss_sold_date_sk = d_date_sk AND d_year BETWEEN 1999 AND 1999 + 2 + UNION ALL + SELECT cs_quantity quantity, cs_list_price list_price + FROM catalog_sales, date_dim + WHERE cs_sold_date_sk = d_date_sk AND d_year BETWEEN 1999 AND 1999 + 2 + UNION ALL + SELECT ws_quantity quantity, ws_list_price list_price + FROM web_sales, date_dim + WHERE ws_sold_date_sk = d_date_sk AND d_year BETWEEN 1999 AND 1999 + 2 + ) x + ) +SELECT channel, i_brand_id, i_class_id, i_category_id, sum(sales), sum(number_sales) +FROM + ( + SELECT + 'store' channel, + i_brand_id, + i_class_id, + i_category_id, + sum(ss_quantity * ss_list_price) sales, + count(*) number_sales + FROM store_sales, item, date_dim + WHERE + ss_item_sk IN (SELECT ss_item_sk FROM cross_items) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1999 + 2 + AND d_moy = 11 + GROUP BY i_brand_id, i_class_id, i_category_id + HAVING sum(ss_quantity * ss_list_price) > (SELECT average_sales FROM avg_sales) + UNION ALL + SELECT + 'catalog' channel, + i_brand_id, + i_class_id, + i_category_id, + sum(cs_quantity * cs_list_price) sales, + count(*) number_sales + FROM catalog_sales, item, date_dim + WHERE + cs_item_sk IN (SELECT ss_item_sk FROM cross_items) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1999 + 2 + AND d_moy = 11 + GROUP BY i_brand_id, i_class_id, i_category_id + HAVING sum(cs_quantity * cs_list_price) > (SELECT average_sales FROM avg_sales) + UNION ALL + SELECT + 'web' channel, + i_brand_id, + i_class_id, + i_category_id, + sum(ws_quantity * ws_list_price) sales, + count(*) number_sales + FROM web_sales, item, date_dim + WHERE + ws_item_sk IN (SELECT ss_item_sk FROM cross_items) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1999 + 2 + AND d_moy = 11 + GROUP BY i_brand_id, i_class_id, i_category_id + HAVING sum(ws_quantity * ws_list_price) > (SELECT average_sales FROM avg_sales) + ) y +GROUP BY rollup (channel, i_brand_id, i_class_id, i_category_id) +ORDER BY channel, i_brand_id, i_class_id, i_category_id +LIMIT 100 +; +WITH + cross_items AS ( + SELECT i_item_sk ss_item_sk + FROM + item, + ( + SELECT + iss.i_brand_id brand_id, + iss.i_class_id class_id, + iss.i_category_id category_id + FROM store_sales, item iss, date_dim d1 + WHERE + ss_item_sk = iss.i_item_sk + AND ss_sold_date_sk = d1.d_date_sk + AND d1.d_year BETWEEN 1999 AND 1999 + 2 + intersect + SELECT ics.i_brand_id, ics.i_class_id, ics.i_category_id + FROM catalog_sales, item ics, date_dim d2 + WHERE + cs_item_sk = ics.i_item_sk + AND cs_sold_date_sk = d2.d_date_sk + AND d2.d_year BETWEEN 1999 AND 1999 + 2 + intersect + SELECT iws.i_brand_id, iws.i_class_id, iws.i_category_id + FROM web_sales, item iws, date_dim d3 + WHERE + ws_item_sk = iws.i_item_sk + AND ws_sold_date_sk = d3.d_date_sk + AND d3.d_year BETWEEN 1999 AND 1999 + 2 + ) x + WHERE + i_brand_id = brand_id + AND i_class_id = class_id + AND i_category_id = category_id + ), + avg_sales AS ( + SELECT avg(quantity * list_price) average_sales + FROM + ( + SELECT ss_quantity quantity, ss_list_price list_price + FROM store_sales, date_dim + WHERE ss_sold_date_sk = d_date_sk AND d_year BETWEEN 1999 AND 1999 + 2 + UNION ALL + SELECT cs_quantity quantity, cs_list_price list_price + FROM catalog_sales, date_dim + WHERE cs_sold_date_sk = d_date_sk AND d_year BETWEEN 1999 AND 1999 + 2 + UNION ALL + SELECT ws_quantity quantity, ws_list_price list_price + FROM web_sales, date_dim + WHERE ws_sold_date_sk = d_date_sk AND d_year BETWEEN 1999 AND 1999 + 2 + ) x + ) +SELECT * +FROM + ( + SELECT + 'store' channel, + i_brand_id, + i_class_id, + i_category_id, + sum(ss_quantity * ss_list_price) sales, + count(*) number_sales + FROM store_sales, item, date_dim + WHERE + ss_item_sk IN (SELECT ss_item_sk FROM cross_items) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_week_seq = ( + SELECT d_week_seq + FROM date_dim + WHERE d_year = 1999 + 1 AND d_moy = 12 AND d_dom = 11 + ) + GROUP BY i_brand_id, i_class_id, i_category_id + HAVING sum(ss_quantity * ss_list_price) > (SELECT average_sales FROM avg_sales) + ) this_year, + ( + SELECT + 'store' channel_2, + i_brand_id AS i_brand_id_2, + i_class_id AS i_class_id_2, + i_category_id AS i_category_id_2, + sum(ss_quantity * ss_list_price) sales_2, + count(*) number_sales_2 + FROM store_sales, item, date_dim + WHERE + ss_item_sk IN (SELECT ss_item_sk FROM cross_items) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_week_seq = ( + SELECT d_week_seq + FROM date_dim + WHERE d_year = 1999 AND d_moy = 12 AND d_dom = 11 + ) + GROUP BY i_brand_id, i_class_id, i_category_id + HAVING sum(ss_quantity * ss_list_price) > (SELECT average_sales FROM avg_sales) + ) last_year +WHERE + this_year.i_brand_id = last_year.i_brand_id_2 + AND this_year.i_class_id = last_year.i_class_id_2 + AND this_year.i_category_id = last_year.i_category_id_2 +ORDER BY + this_year.channel, + this_year.i_brand_id, + this_year.i_class_id, + this_year.i_category_id +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/15.sql b/datafusion/core/tests/tpc-ds/15.sql index 37494c03085b6..0dea3d9b4f936 100644 --- a/datafusion/core/tests/tpc-ds/15.sql +++ b/datafusion/core/tests/tpc-ds/15.sql @@ -1,21 +1,27 @@ --- Copyright 2015 Transaction Processing Performance Council - -select ca_zip - ,sum(cs_sales_price) - from catalog_sales - ,customer - ,customer_address - ,date_dim - where cs_bill_customer_sk = c_customer_sk - and c_current_addr_sk = ca_address_sk - and ( substr(ca_zip,1,5) in ('85669', '86197','88274','83405','86475', - '85392', '85460', '80348', '81792') - or ca_state in ('CA','WA','GA') - or cs_sales_price > 500) - and cs_sold_date_sk = d_date_sk - and d_qoy = 2 and d_year = 2000 - group by ca_zip - order by ca_zip - limit 100; - - +SELECT ca_zip, sum(cs_sales_price) +FROM catalog_sales, customer, customer_address, date_dim +WHERE + cs_bill_customer_sk = c_customer_sk + AND c_current_addr_sk = ca_address_sk + AND ( + substr(ca_zip, 1, 5) IN ( + '85669', + '86197', + '88274', + '83405', + '86475', + '85392', + '85460', + '80348', + '81792' + ) + OR ca_state IN ('CA', 'WA', 'GA') + OR cs_sales_price > 500 + ) + AND cs_sold_date_sk = d_date_sk + AND d_qoy = 2 + AND d_year = 2001 +GROUP BY ca_zip +ORDER BY ca_zip +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/16.sql b/datafusion/core/tests/tpc-ds/16.sql index 83edc5b198379..ca0d1f0e57960 100644 --- a/datafusion/core/tests/tpc-ds/16.sql +++ b/datafusion/core/tests/tpc-ds/16.sql @@ -1,32 +1,37 @@ --- Copyright 2015 Transaction Processing Performance Council - -select - count(distinct cs_order_number) as 'order count' - ,sum(cs_ext_ship_cost) as 'total shipping cost' - ,sum(cs_net_profit) as 'total net profit' -from - catalog_sales cs1 - ,date_dim - ,customer_address - ,call_center -where - d_date between '1999-4-01' and - (cast('1999-4-01' as date) + INTERVAL '60 days') -and cs1.cs_ship_date_sk = d_date_sk -and cs1.cs_ship_addr_sk = ca_address_sk -and ca_state = 'GA' -and cs1.cs_call_center_sk = cc_call_center_sk -and cc_county in ('Daviess County','Franklin Parish','Barrow County','Luce County', - 'Fairfield County' -) -and exists (select * - from catalog_sales cs2 - where cs1.cs_order_number = cs2.cs_order_number - and cs1.cs_warehouse_sk <> cs2.cs_warehouse_sk) -and not exists(select * - from catalog_returns cr1 - where cs1.cs_order_number = cr1.cr_order_number) -order by count(distinct cs_order_number) -limit 100; - +SELECT + count(DISTINCT cs_order_number) AS order_count, + sum(cs_ext_ship_cost) AS total_shipping_cost, + sum(cs_net_profit) AS total_net_profit +FROM catalog_sales cs1, date_dim, customer_address, call_center +WHERE + d_date BETWEEN cast('2002-2-01' AS date) AND ( + cast('2002-2-01' AS date) + INTERVAL '60 days' + ) + AND cs1.cs_ship_date_sk = d_date_sk + AND cs1.cs_ship_addr_sk = ca_address_sk + AND ca_state = 'GA' + AND cs1.cs_call_center_sk = cc_call_center_sk + AND cc_county IN ( + 'Williamson County', + 'Daviess County', + 'Franklin Parish', + 'Barrow County', + 'Luce County', + 'Fairfield County' + ) + AND exists ( + SELECT * + FROM catalog_sales cs2 + WHERE + cs1.cs_order_number = cs2.cs_order_number + AND cs1.cs_warehouse_sk <> cs2.cs_warehouse_sk + ) + AND NOT exists ( + SELECT * + FROM catalog_returns cr1 + WHERE cs1.cs_order_number = cr1.cr_order_number + ) +ORDER BY count(DISTINCT cs_order_number) +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/17.sql b/datafusion/core/tests/tpc-ds/17.sql index ebf93109b002a..89cefe67dca01 100644 --- a/datafusion/core/tests/tpc-ds/17.sql +++ b/datafusion/core/tests/tpc-ds/17.sql @@ -1,46 +1,44 @@ --- Copyright 2015 Transaction Processing Performance Council - -select i_item_id - ,i_item_desc - ,s_state - ,count(ss_quantity) as store_sales_quantitycount - ,avg(ss_quantity) as store_sales_quantityave - ,stddev_samp(ss_quantity) as store_sales_quantitystdev - ,stddev_samp(ss_quantity)/avg(ss_quantity) as store_sales_quantitycov - ,count(sr_return_quantity) as store_returns_quantitycount - ,avg(sr_return_quantity) as store_returns_quantityave - ,stddev_samp(sr_return_quantity) as store_returns_quantitystdev - ,stddev_samp(sr_return_quantity)/avg(sr_return_quantity) as store_returns_quantitycov - ,count(cs_quantity) as catalog_sales_quantitycount ,avg(cs_quantity) as catalog_sales_quantityave - ,stddev_samp(cs_quantity) as catalog_sales_quantitystdev - ,stddev_samp(cs_quantity)/avg(cs_quantity) as catalog_sales_quantitycov - from store_sales - ,store_returns - ,catalog_sales - ,date_dim d1 - ,date_dim d2 - ,date_dim d3 - ,store - ,item - where d1.d_quarter_name = '1998Q1' - and d1.d_date_sk = ss_sold_date_sk - and i_item_sk = ss_item_sk - and s_store_sk = ss_store_sk - and ss_customer_sk = sr_customer_sk - and ss_item_sk = sr_item_sk - and ss_ticket_number = sr_ticket_number - and sr_returned_date_sk = d2.d_date_sk - and d2.d_quarter_name in ('1998Q1','1998Q2','1998Q3') - and sr_customer_sk = cs_bill_customer_sk - and sr_item_sk = cs_item_sk - and cs_sold_date_sk = d3.d_date_sk - and d3.d_quarter_name in ('1998Q1','1998Q2','1998Q3') - group by i_item_id - ,i_item_desc - ,s_state - order by i_item_id - ,i_item_desc - ,s_state -limit 100; - +SELECT + i_item_id, + i_item_desc, + s_state, + count(ss_quantity) AS store_sales_quantitycount, + avg(ss_quantity) AS store_sales_quantityave, + stddev_samp(ss_quantity) AS store_sales_quantitystdev, + stddev_samp(ss_quantity) / avg(ss_quantity) AS store_sales_quantitycov, + count(sr_return_quantity) AS store_returns_quantitycount, + avg(sr_return_quantity) AS store_returns_quantityave, + stddev_samp(sr_return_quantity) AS store_returns_quantitystdev, + stddev_samp(sr_return_quantity) / avg(sr_return_quantity) AS store_returns_quantitycov, + count(cs_quantity) AS catalog_sales_quantitycount, + avg(cs_quantity) AS catalog_sales_quantityave, + stddev_samp(cs_quantity) AS catalog_sales_quantitystdev, + stddev_samp(cs_quantity) / avg(cs_quantity) AS catalog_sales_quantitycov +FROM + store_sales, + store_returns, + catalog_sales, + date_dim d1, + date_dim d2, + date_dim d3, + store, + item +WHERE + d1.d_quarter_name = '2001Q1' + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND ss_customer_sk = sr_customer_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND sr_returned_date_sk = d2.d_date_sk + AND d2.d_quarter_name IN ('2001Q1', '2001Q2', '2001Q3') + AND sr_customer_sk = cs_bill_customer_sk + AND sr_item_sk = cs_item_sk + AND cs_sold_date_sk = d3.d_date_sk + AND d3.d_quarter_name IN ('2001Q1', '2001Q2', '2001Q3') +GROUP BY i_item_id, i_item_desc, s_state +ORDER BY i_item_id, i_item_desc, s_state +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/18.sql b/datafusion/core/tests/tpc-ds/18.sql index fb1101906b8e2..5510baf8bd415 100644 --- a/datafusion/core/tests/tpc-ds/18.sql +++ b/datafusion/core/tests/tpc-ds/18.sql @@ -1,35 +1,36 @@ --- Copyright 2015 Transaction Processing Performance Council - -select i_item_id, - ca_country, - ca_state, - ca_county, - avg( cast(cs_quantity as decimal(12,2))) agg1, - avg( cast(cs_list_price as decimal(12,2))) agg2, - avg( cast(cs_coupon_amt as decimal(12,2))) agg3, - avg( cast(cs_sales_price as decimal(12,2))) agg4, - avg( cast(cs_net_profit as decimal(12,2))) agg5, - avg( cast(c_birth_year as decimal(12,2))) agg6, - avg( cast(cd1.cd_dep_count as decimal(12,2))) agg7 - from catalog_sales, customer_demographics cd1, - customer_demographics cd2, customer, customer_address, date_dim, item - where cs_sold_date_sk = d_date_sk and - cs_item_sk = i_item_sk and - cs_bill_cdemo_sk = cd1.cd_demo_sk and - cs_bill_customer_sk = c_customer_sk and - cd1.cd_gender = 'M' and - cd1.cd_education_status = 'College' and - c_current_cdemo_sk = cd2.cd_demo_sk and - c_current_addr_sk = ca_address_sk and - c_birth_month in (9,5,12,4,1,10) and - d_year = 2001 and - ca_state in ('ND','WI','AL' - ,'NC','OK','MS','TN') - group by rollup (i_item_id, ca_country, ca_state, ca_county) - order by ca_country, - ca_state, - ca_county, - i_item_id - limit 100; - - +SELECT + i_item_id, + ca_country, + ca_state, + ca_county, + avg(cast(cs_quantity AS decimal(12, 2))) agg1, + avg(cast(cs_list_price AS decimal(12, 2))) agg2, + avg(cast(cs_coupon_amt AS decimal(12, 2))) agg3, + avg(cast(cs_sales_price AS decimal(12, 2))) agg4, + avg(cast(cs_net_profit AS decimal(12, 2))) agg5, + avg(cast(c_birth_year AS decimal(12, 2))) agg6, + avg(cast(cd1.cd_dep_count AS decimal(12, 2))) agg7 +FROM + catalog_sales, + customer_demographics cd1, + customer_demographics cd2, + customer, + customer_address, + date_dim, + item +WHERE + cs_sold_date_sk = d_date_sk + AND cs_item_sk = i_item_sk + AND cs_bill_cdemo_sk = cd1.cd_demo_sk + AND cs_bill_customer_sk = c_customer_sk + AND cd1.cd_gender = 'F' + AND cd1.cd_education_status = 'Unknown' + AND c_current_cdemo_sk = cd2.cd_demo_sk + AND c_current_addr_sk = ca_address_sk + AND c_birth_month IN (1, 6, 8, 9, 12, 2) + AND d_year = 1998 + AND ca_state IN ('MS', 'IN', 'ND', 'OK', 'NM', 'VA', 'MS') +GROUP BY rollup (i_item_id, ca_country, ca_state, ca_county) +ORDER BY ca_country, ca_state, ca_county, i_item_id +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/19.sql b/datafusion/core/tests/tpc-ds/19.sql index d6908a02e810d..f623fd011852f 100644 --- a/datafusion/core/tests/tpc-ds/19.sql +++ b/datafusion/core/tests/tpc-ds/19.sql @@ -1,26 +1,21 @@ --- Copyright 2015 Transaction Processing Performance Council - -select i_brand_id brand_id, i_brand brand, i_manufact_id, i_manufact, - sum(ss_ext_sales_price) ext_price - from date_dim, store_sales, item,customer,customer_address,store - where d_date_sk = ss_sold_date_sk - and ss_item_sk = i_item_sk - and i_manager_id=7 - and d_moy=11 - and d_year=1999 - and ss_customer_sk = c_customer_sk - and c_current_addr_sk = ca_address_sk - and substr(ca_zip,1,5) <> substr(s_zip,1,5) - and ss_store_sk = s_store_sk - group by i_brand - ,i_brand_id - ,i_manufact_id - ,i_manufact - order by ext_price desc - ,i_brand - ,i_brand_id - ,i_manufact_id - ,i_manufact -limit 100 ; - - +SELECT + i_brand_id brand_id, + i_brand brand, + i_manufact_id, + i_manufact, + sum(ss_ext_sales_price) ext_price +FROM date_dim, store_sales, item, customer, customer_address, store +WHERE + d_date_sk = ss_sold_date_sk + AND ss_item_sk = i_item_sk + AND i_manager_id = 8 + AND d_moy = 11 + AND d_year = 1998 + AND ss_customer_sk = c_customer_sk + AND c_current_addr_sk = ca_address_sk + AND substr(ca_zip, 1, 5) <> substr(s_zip, 1, 5) + AND ss_store_sk = s_store_sk +GROUP BY i_brand, i_brand_id, i_manufact_id, i_manufact +ORDER BY ext_price desc, i_brand, i_brand_id, i_manufact_id, i_manufact +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/2.sql b/datafusion/core/tests/tpc-ds/2.sql index 4fb1813e95faa..e427cd781227c 100644 --- a/datafusion/core/tests/tpc-ds/2.sql +++ b/datafusion/core/tests/tpc-ds/2.sql @@ -1,61 +1,69 @@ --- Copyright 2015 Transaction Processing Performance Council - -with wscs as - (select sold_date_sk - ,sales_price - from (select ws_sold_date_sk sold_date_sk - ,ws_ext_sales_price sales_price - from web_sales - union all - select cs_sold_date_sk sold_date_sk - ,cs_ext_sales_price sales_price - from catalog_sales)), - wswscs as - (select d_week_seq, - sum(case when (d_day_name='Sunday') then sales_price else null end) sun_sales, - sum(case when (d_day_name='Monday') then sales_price else null end) mon_sales, - sum(case when (d_day_name='Tuesday') then sales_price else null end) tue_sales, - sum(case when (d_day_name='Wednesday') then sales_price else null end) wed_sales, - sum(case when (d_day_name='Thursday') then sales_price else null end) thu_sales, - sum(case when (d_day_name='Friday') then sales_price else null end) fri_sales, - sum(case when (d_day_name='Saturday') then sales_price else null end) sat_sales - from wscs - ,date_dim - where d_date_sk = sold_date_sk - group by d_week_seq) - select d_week_seq1 - ,round(sun_sales1/sun_sales2,2) - ,round(mon_sales1/mon_sales2,2) - ,round(tue_sales1/tue_sales2,2) - ,round(wed_sales1/wed_sales2,2) - ,round(thu_sales1/thu_sales2,2) - ,round(fri_sales1/fri_sales2,2) - ,round(sat_sales1/sat_sales2,2) - from - (select wswscs.d_week_seq d_week_seq1 - ,sun_sales sun_sales1 - ,mon_sales mon_sales1 - ,tue_sales tue_sales1 - ,wed_sales wed_sales1 - ,thu_sales thu_sales1 - ,fri_sales fri_sales1 - ,sat_sales sat_sales1 - from wswscs,date_dim - where date_dim.d_week_seq = wswscs.d_week_seq and - d_year = 2001) y, - (select wswscs.d_week_seq d_week_seq2 - ,sun_sales sun_sales2 - ,mon_sales mon_sales2 - ,tue_sales tue_sales2 - ,wed_sales wed_sales2 - ,thu_sales thu_sales2 - ,fri_sales fri_sales2 - ,sat_sales sat_sales2 - from wswscs - ,date_dim - where date_dim.d_week_seq = wswscs.d_week_seq and - d_year = 2001+1) z - where d_week_seq1=d_week_seq2-53 - order by d_week_seq1; - - +WITH wscs AS (SELECT sold_date_sk, sales_price + FROM (SELECT ws_sold_date_sk sold_date_sk, + ws_ext_sales_price sales_price + FROM web_sales + UNION ALL + SELECT cs_sold_date_sk sold_date_sk, + cs_ext_sales_price sales_price + FROM catalog_sales) x), + wswscs AS (SELECT d_week_seq, + sum( + CASE WHEN (d_day_name = 'Sunday') THEN sales_price ELSE null END + ) sun_sales, + sum( + CASE WHEN (d_day_name = 'Monday') THEN sales_price ELSE null END + ) mon_sales, + sum( + CASE WHEN (d_day_name = 'Tuesday') THEN sales_price ELSE null END + ) tue_sales, + sum( + CASE WHEN (d_day_name = 'Wednesday') THEN sales_price ELSE null END + ) wed_sales, + sum( + CASE WHEN (d_day_name = 'Thursday') THEN sales_price ELSE null END + ) thu_sales, + sum( + CASE WHEN (d_day_name = 'Friday') THEN sales_price ELSE null END + ) fri_sales, + sum( + CASE WHEN (d_day_name = 'Saturday') THEN sales_price ELSE null END + ) sat_sales + FROM wscs, + date_dim + WHERE d_date_sk = sold_date_sk + GROUP BY d_week_seq) +SELECT d_week_seq1, + round(sun_sales1 / sun_sales2, 2), + round(mon_sales1 / mon_sales2, 2), + round(tue_sales1 / tue_sales2, 2), + round(wed_sales1 / wed_sales2, 2), + round(thu_sales1 / thu_sales2, 2), + round(fri_sales1 / fri_sales2, 2), + round(sat_sales1 / sat_sales2, 2) +FROM (SELECT wswscs.d_week_seq d_week_seq1, + sun_sales sun_sales1, + mon_sales mon_sales1, + tue_sales tue_sales1, + wed_sales wed_sales1, + thu_sales thu_sales1, + fri_sales fri_sales1, + sat_sales sat_sales1 + FROM wswscs, + date_dim + WHERE date_dim.d_week_seq = wswscs.d_week_seq + AND d_year = 2001) y, + (SELECT wswscs.d_week_seq d_week_seq2, + sun_sales sun_sales2, + mon_sales mon_sales2, + tue_sales tue_sales2, + wed_sales wed_sales2, + thu_sales thu_sales2, + fri_sales fri_sales2, + sat_sales sat_sales2 + FROM wswscs, + date_dim + WHERE date_dim.d_week_seq = wswscs.d_week_seq + AND d_year = 2001 + 1) z +WHERE d_week_seq1 = d_week_seq2 - 53 +ORDER BY d_week_seq1 +; diff --git a/datafusion/core/tests/tpc-ds/20.sql b/datafusion/core/tests/tpc-ds/20.sql index 7d45843269df2..3a402790f313a 100644 --- a/datafusion/core/tests/tpc-ds/20.sql +++ b/datafusion/core/tests/tpc-ds/20.sql @@ -1,31 +1,22 @@ --- Copyright 2015 Transaction Processing Performance Council - -select i_item_id - ,i_item_desc - ,i_category - ,i_class - ,i_current_price - ,sum(cs_ext_sales_price) as itemrevenue - ,sum(cs_ext_sales_price)*100/sum(sum(cs_ext_sales_price)) over - (partition by i_class) as revenueratio - from catalog_sales - ,item - ,date_dim - where cs_item_sk = i_item_sk - and i_category in ('Jewelry', 'Sports', 'Books') - and cs_sold_date_sk = d_date_sk - and d_date between cast('2001-01-12' as date) - and (cast('2001-01-12' as date) + INTERVAL '30 days') - group by i_item_id - ,i_item_desc - ,i_category - ,i_class - ,i_current_price - order by i_category - ,i_class - ,i_item_id - ,i_item_desc - ,revenueratio -limit 100; - - +SELECT + i_item_id, + i_item_desc, + i_category, + i_class, + i_current_price, + sum(cs_ext_sales_price) AS itemrevenue, + sum(cs_ext_sales_price) + * 100 + / sum(sum(cs_ext_sales_price)) OVER (PARTITION BY i_class) AS revenueratio +FROM catalog_sales, item, date_dim +WHERE + cs_item_sk = i_item_sk + AND i_category IN ('Sports', 'Books', 'Home') + AND cs_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('1999-02-22' AS date) AND ( + cast('1999-02-22' AS date) + INTERVAL '30 days' + ) +GROUP BY i_item_id, i_item_desc, i_category, i_class, i_current_price +ORDER BY i_category, i_class, i_item_id, i_item_desc, revenueratio +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/21.sql b/datafusion/core/tests/tpc-ds/21.sql index 7d1ea8a7a9fcd..c2a08d94b8f59 100644 --- a/datafusion/core/tests/tpc-ds/21.sql +++ b/datafusion/core/tests/tpc-ds/21.sql @@ -1,31 +1,37 @@ --- Copyright 2015 Transaction Processing Performance Council - -select * - from(select w_warehouse_name - ,i_item_id - ,sum(case when (cast(d_date as date) < cast ('1998-04-08' as date)) - then inv_quantity_on_hand - else 0 end) as inv_before - ,sum(case when (cast(d_date as date) >= cast ('1998-04-08' as date)) - then inv_quantity_on_hand - else 0 end) as inv_after - from inventory - ,warehouse - ,item - ,date_dim - where i_current_price between 0.99 and 1.49 - and i_item_sk = inv_item_sk - and inv_warehouse_sk = w_warehouse_sk - and inv_date_sk = d_date_sk - and d_date between (cast ('1998-04-08' as date) - INTERVAL '30 days') - and (cast ('1998-04-08' as date) + INTERVAL '30 days') - group by w_warehouse_name, i_item_id) x - where (case when inv_before > 0 - then inv_after / inv_before - else null - end) between 2.0/3.0 and 3.0/2.0 - order by w_warehouse_name - ,i_item_id - limit 100; - - +SELECT * +FROM + ( + SELECT + w_warehouse_name, + i_item_id, + sum( + CASE + WHEN (cast(d_date AS date) < cast('2000-03-11' AS date)) + THEN inv_quantity_on_hand + ELSE 0 + END + ) AS inv_before, + sum( + CASE + WHEN (cast(d_date AS date) >= cast('2000-03-11' AS date)) + THEN inv_quantity_on_hand + ELSE 0 + END + ) AS inv_after + FROM inventory, warehouse, item, date_dim + WHERE + i_current_price BETWEEN 0.99 AND 1.49 + AND i_item_sk = inv_item_sk + AND inv_warehouse_sk = w_warehouse_sk + AND inv_date_sk = d_date_sk + AND d_date BETWEEN (cast('2000-03-11' AS date) - INTERVAL '30 days') AND ( + cast('2000-03-11' AS date) + INTERVAL '30 days' + ) + GROUP BY w_warehouse_name, i_item_id + ) x +WHERE + (CASE WHEN inv_before > 0 THEN inv_after / inv_before ELSE null END) + BETWEEN 2.0 / 3.0 AND 3.0 / 2.0 +ORDER BY w_warehouse_name, i_item_id +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/22.sql b/datafusion/core/tests/tpc-ds/22.sql index 9f0dccf3347b9..1ae164409c27d 100644 --- a/datafusion/core/tests/tpc-ds/22.sql +++ b/datafusion/core/tests/tpc-ds/22.sql @@ -1,21 +1,10 @@ --- Copyright 2015 Transaction Processing Performance Council - -select i_product_name - ,i_brand - ,i_class - ,i_category - ,avg(inv_quantity_on_hand) qoh - from inventory - ,date_dim - ,item - where inv_date_sk=d_date_sk - and inv_item_sk=i_item_sk - and d_month_seq between 1212 and 1212 + 11 - group by rollup(i_product_name - ,i_brand - ,i_class - ,i_category) -order by qoh, i_product_name, i_brand, i_class, i_category -limit 100; - - +SELECT i_product_name, i_brand, i_class, i_category, avg(inv_quantity_on_hand) qoh +FROM inventory, date_dim, item +WHERE + inv_date_sk = d_date_sk + AND inv_item_sk = i_item_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 +GROUP BY rollup (i_product_name, i_brand, i_class, i_category) +ORDER BY qoh, i_product_name, i_brand, i_class, i_category +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/23.sql b/datafusion/core/tests/tpc-ds/23.sql index d16cfe65d81bf..48ef32fa88dd0 100644 --- a/datafusion/core/tests/tpc-ds/23.sql +++ b/datafusion/core/tests/tpc-ds/23.sql @@ -1,108 +1,125 @@ --- Copyright 2015 Transaction Processing Performance Council - -with frequent_ss_items as - (select substr(i_item_desc,1,30) itemdesc,i_item_sk item_sk,d_date solddate,count(*) cnt - from store_sales - ,date_dim - ,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*ss_sales_price) csales - from store_sales - ,customer - ,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)), - best_ss_customer as - (select c_customer_sk,sum(ss_quantity*ss_sales_price) ssales - from store_sales - ,customer - where ss_customer_sk = c_customer_sk - group by c_customer_sk - having sum(ss_quantity*ss_sales_price) > (95/100.0) * (select - * -from - max_store_sales)) - select sum(sales) - from (select cs_quantity*cs_list_price sales - from catalog_sales - ,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*ws_list_price sales - from web_sales - ,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)) - 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 store_sales - ,date_dim - ,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*ss_sales_price) csales - from store_sales - ,customer - ,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)), - best_ss_customer as - (select c_customer_sk,sum(ss_quantity*ss_sales_price) ssales - from store_sales - ,customer - where ss_customer_sk = c_customer_sk - group by c_customer_sk - having sum(ss_quantity*ss_sales_price) > (95/100.0) * (select - * - from max_store_sales)) - select c_last_name,c_first_name,sales - from (select c_last_name,c_first_name,sum(cs_quantity*cs_list_price) sales - from catalog_sales - ,customer - ,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*ws_list_price) sales - from web_sales - ,customer - ,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) - order by c_last_name,c_first_name,sales - 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 store_sales, date_dim, item + WHERE + ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND d_year IN (2000, 2000 + 1, 2000 + 2, 2000 + 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 * ss_sales_price) csales + FROM store_sales, customer, date_dim + WHERE + ss_customer_sk = c_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year IN (2000, 2000 + 1, 2000 + 2, 2000 + 3) + GROUP BY c_customer_sk + ) + ), + best_ss_customer AS ( + SELECT c_customer_sk, sum(ss_quantity * ss_sales_price) ssales + FROM store_sales, customer + WHERE ss_customer_sk = c_customer_sk + GROUP BY c_customer_sk + having + sum(ss_quantity * ss_sales_price) + > (50 / 100.0) * (SELECT * FROM max_store_sales) + ) +SELECT sum(sales) +FROM + ( + SELECT cs_quantity * cs_list_price sales + FROM catalog_sales, date_dim + WHERE + d_year = 2000 + AND d_moy = 2 + 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 * ws_list_price sales + FROM web_sales, date_dim + WHERE + d_year = 2000 + AND d_moy = 2 + 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) + ) +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 store_sales, date_dim, item + WHERE + ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND d_year IN (2000, 2000 + 1, 2000 + 2, 2000 + 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 * ss_sales_price) csales + FROM store_sales, customer, date_dim + WHERE + ss_customer_sk = c_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year IN (2000, 2000 + 1, 2000 + 2, 2000 + 3) + GROUP BY c_customer_sk + ) + ), + best_ss_customer AS ( + SELECT c_customer_sk, sum(ss_quantity * ss_sales_price) ssales + FROM store_sales, customer + WHERE ss_customer_sk = c_customer_sk + GROUP BY c_customer_sk + having + sum(ss_quantity * ss_sales_price) + > (50 / 100.0) * (SELECT * FROM max_store_sales) + ) +SELECT c_last_name, c_first_name, sales +FROM + ( + SELECT c_last_name, c_first_name, sum(cs_quantity * cs_list_price) sales + FROM catalog_sales, customer, date_dim + WHERE + d_year = 2000 + AND d_moy = 2 + 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 * ws_list_price) sales + FROM web_sales, customer, date_dim + WHERE + d_year = 2000 + AND d_moy = 2 + 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 + ) +ORDER BY c_last_name, c_first_name, sales +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/24.sql b/datafusion/core/tests/tpc-ds/24.sql index 417b609db7c83..f27ad2216cd1c 100644 --- a/datafusion/core/tests/tpc-ds/24.sql +++ b/datafusion/core/tests/tpc-ds/24.sql @@ -1,108 +1,92 @@ --- Copyright 2015 Transaction Processing Performance Council - -with ssales as -(select c_last_name - ,c_first_name - ,s_store_name - ,ca_state - ,s_state - ,i_color - ,i_current_price - ,i_manager_id - ,i_units - ,i_size - ,sum(ss_sales_price) netpaid -from store_sales - ,store_returns - ,store - ,item - ,customer - ,customer_address -where ss_ticket_number = sr_ticket_number - and ss_item_sk = sr_item_sk - and ss_customer_sk = c_customer_sk - and ss_item_sk = i_item_sk - and ss_store_sk = s_store_sk - and c_current_addr_sk = ca_address_sk - and c_birth_country <> upper(ca_country) - and s_zip = ca_zip -and s_market_id=7 -group by c_last_name - ,c_first_name - ,s_store_name - ,ca_state - ,s_state - ,i_color - ,i_current_price - ,i_manager_id - ,i_units - ,i_size) -select c_last_name - ,c_first_name - ,s_store_name - ,sum(netpaid) paid -from ssales -where i_color = 'orchid' -group by c_last_name - ,c_first_name - ,s_store_name -having sum(netpaid) > (select 0.05*avg(netpaid) - from ssales) -order by c_last_name - ,c_first_name - ,s_store_name +WITH ssales AS (SELECT c_last_name, + c_first_name, + s_store_name, + ca_state, + s_state, + i_color, + i_current_price, + i_manager_id, + i_units, + i_size, + sum(ss_net_paid) netpaid + FROM store_sales, + store_returns, + store, + item, + customer, + customer_address + WHERE ss_ticket_number = sr_ticket_number + AND ss_item_sk = sr_item_sk + AND ss_customer_sk = c_customer_sk + AND ss_item_sk = i_item_sk + AND ss_store_sk = s_store_sk + AND c_current_addr_sk = ca_address_sk + AND c_birth_country <> upper(ca_country) + AND s_zip = ca_zip + AND s_market_id = 8 + GROUP BY c_last_name, + c_first_name, + s_store_name, + ca_state, + s_state, + i_color, + i_current_price, + i_manager_id, + i_units, + i_size) +SELECT c_last_name, + c_first_name, + s_store_name, + sum(netpaid) paid +FROM ssales +WHERE i_color = 'turquoise' +GROUP BY c_last_name, c_first_name, s_store_name +HAVING sum(netpaid) > (SELECT 0.05 * avg(netpaid) FROM ssales) +ORDER BY c_last_name, c_first_name, s_store_name ; -with ssales as -(select c_last_name - ,c_first_name - ,s_store_name - ,ca_state - ,s_state - ,i_color - ,i_current_price - ,i_manager_id - ,i_units - ,i_size - ,sum(ss_sales_price) netpaid -from store_sales - ,store_returns - ,store - ,item - ,customer - ,customer_address -where ss_ticket_number = sr_ticket_number - and ss_item_sk = sr_item_sk - and ss_customer_sk = c_customer_sk - and ss_item_sk = i_item_sk - and ss_store_sk = s_store_sk - and c_current_addr_sk = ca_address_sk - and c_birth_country <> upper(ca_country) - and s_zip = ca_zip - and s_market_id = 7 -group by c_last_name - ,c_first_name - ,s_store_name - ,ca_state - ,s_state - ,i_color - ,i_current_price - ,i_manager_id - ,i_units - ,i_size) -select c_last_name - ,c_first_name - ,s_store_name - ,sum(netpaid) paid -from ssales -where i_color = 'chiffon' -group by c_last_name - ,c_first_name - ,s_store_name -having sum(netpaid) > (select 0.05*avg(netpaid) - from ssales) -order by c_last_name - ,c_first_name - ,s_store_name +WITH ssales AS (SELECT c_last_name, + c_first_name, + s_store_name, + ca_state, + s_state, + i_color, + i_current_price, + i_manager_id, + i_units, + i_size, + sum(ss_net_paid) netpaid + FROM store_sales, + store_returns, + store, + item, + customer, + customer_address + WHERE ss_ticket_number = sr_ticket_number + AND ss_item_sk = sr_item_sk + AND ss_customer_sk = c_customer_sk + AND ss_item_sk = i_item_sk + AND ss_store_sk = s_store_sk + AND c_current_addr_sk = ca_address_sk + AND c_birth_country <> upper(ca_country) + AND s_zip = ca_zip + AND s_market_id = 8 + GROUP BY c_last_name, + c_first_name, + s_store_name, + ca_state, + s_state, + i_color, + i_current_price, + i_manager_id, + i_units, + i_size) +SELECT c_last_name, + c_first_name, + s_store_name, + sum(netpaid) paid +FROM ssales +WHERE i_color = 'yellow' +GROUP BY c_last_name, c_first_name, s_store_name +HAVING sum(netpaid) > (SELECT 0.05 * avg(netpaid) FROM ssales) +ORDER BY c_last_name, c_first_name, s_store_name ; - - diff --git a/datafusion/core/tests/tpc-ds/25.sql b/datafusion/core/tests/tpc-ds/25.sql index d3eccad89ada2..0c6b5b34efd84 100644 --- a/datafusion/core/tests/tpc-ds/25.sql +++ b/datafusion/core/tests/tpc-ds/25.sql @@ -1,49 +1,38 @@ --- Copyright 2015 Transaction Processing Performance Council - -select - i_item_id - ,i_item_desc - ,s_store_id - ,s_store_name - ,sum(ss_net_profit) as store_sales_profit - ,sum(sr_net_loss) as store_returns_loss - ,sum(cs_net_profit) as catalog_sales_profit - from - store_sales - ,store_returns - ,catalog_sales - ,date_dim d1 - ,date_dim d2 - ,date_dim d3 - ,store - ,item - where - d1.d_moy = 4 - and d1.d_year = 2000 - and d1.d_date_sk = ss_sold_date_sk - and i_item_sk = ss_item_sk - and s_store_sk = ss_store_sk - and ss_customer_sk = sr_customer_sk - and ss_item_sk = sr_item_sk - and ss_ticket_number = sr_ticket_number - and sr_returned_date_sk = d2.d_date_sk - and d2.d_moy between 4 and 10 - and d2.d_year = 2000 - and sr_customer_sk = cs_bill_customer_sk - and sr_item_sk = cs_item_sk - and cs_sold_date_sk = d3.d_date_sk - and d3.d_moy between 4 and 10 - and d3.d_year = 2000 - group by - i_item_id - ,i_item_desc - ,s_store_id - ,s_store_name - order by - i_item_id - ,i_item_desc - ,s_store_id - ,s_store_name - limit 100; - - +SELECT + i_item_id, + i_item_desc, + s_store_id, + s_store_name, + sum(ss_net_profit) AS store_sales_profit, + sum(sr_net_loss) AS store_returns_loss, + sum(cs_net_profit) AS catalog_sales_profit +FROM + store_sales, + store_returns, + catalog_sales, + date_dim d1, + date_dim d2, + date_dim d3, + store, + item +WHERE + d1.d_moy = 4 + AND d1.d_year = 2001 + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND ss_customer_sk = sr_customer_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND sr_returned_date_sk = d2.d_date_sk + AND d2.d_moy BETWEEN 4 AND 10 + AND d2.d_year = 2001 + AND sr_customer_sk = cs_bill_customer_sk + AND sr_item_sk = cs_item_sk + AND cs_sold_date_sk = d3.d_date_sk + AND d3.d_moy BETWEEN 4 AND 10 + AND d3.d_year = 2001 +GROUP BY i_item_id, i_item_desc, s_store_id, s_store_name +ORDER BY i_item_id, i_item_desc, s_store_id, s_store_name +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/26.sql b/datafusion/core/tests/tpc-ds/26.sql index 5c71a1e24117e..0f579126a50aa 100644 --- a/datafusion/core/tests/tpc-ds/26.sql +++ b/datafusion/core/tests/tpc-ds/26.sql @@ -1,22 +1,21 @@ --- Copyright 2015 Transaction Processing Performance Council - -select i_item_id, - avg(cs_quantity) agg1, - avg(cs_list_price) agg2, - avg(cs_coupon_amt) agg3, - avg(cs_sales_price) agg4 - from catalog_sales, customer_demographics, date_dim, item, promotion - where cs_sold_date_sk = d_date_sk and - cs_item_sk = i_item_sk and - cs_bill_cdemo_sk = cd_demo_sk and - cs_promo_sk = p_promo_sk and - cd_gender = 'F' and - cd_marital_status = 'W' and - cd_education_status = 'Primary' and - (p_channel_email = 'N' or p_channel_event = 'N') and - d_year = 1998 - group by i_item_id - order by i_item_id - limit 100; - - +SELECT + i_item_id, + avg(cs_quantity) agg1, + avg(cs_list_price) agg2, + avg(cs_coupon_amt) agg3, + avg(cs_sales_price) agg4 +FROM catalog_sales, customer_demographics, date_dim, item, promotion +WHERE + cs_sold_date_sk = d_date_sk + AND cs_item_sk = i_item_sk + AND cs_bill_cdemo_sk = cd_demo_sk + AND cs_promo_sk = p_promo_sk + AND cd_gender = 'M' + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND (p_channel_email = 'N' OR p_channel_event = 'N') + AND d_year = 2000 +GROUP BY i_item_id +ORDER BY i_item_id +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/27.sql b/datafusion/core/tests/tpc-ds/27.sql index e060cc26815d6..3ca38de81afa8 100644 --- a/datafusion/core/tests/tpc-ds/27.sql +++ b/datafusion/core/tests/tpc-ds/27.sql @@ -1,24 +1,23 @@ --- Copyright 2015 Transaction Processing Performance Council - -select i_item_id, - s_state, grouping(s_state) g_state, - avg(ss_quantity) agg1, - avg(ss_list_price) agg2, - avg(ss_coupon_amt) agg3, - avg(ss_sales_price) agg4 - from store_sales, customer_demographics, date_dim, store, item - where ss_sold_date_sk = d_date_sk and - ss_item_sk = i_item_sk and - ss_store_sk = s_store_sk and - ss_cdemo_sk = cd_demo_sk and - cd_gender = 'M' and - cd_marital_status = 'W' and - cd_education_status = 'College' and - d_year = 2002 and - s_state in ('MO','LA', 'GA', 'MI', 'SC', 'OH') - group by rollup (i_item_id, s_state) - order by i_item_id - ,s_state - limit 100; - - +SELECT + i_item_id, + s_state, + grouping(s_state) g_state, + avg(ss_quantity) agg1, + avg(ss_list_price) agg2, + avg(ss_coupon_amt) agg3, + avg(ss_sales_price) agg4 +FROM store_sales, customer_demographics, date_dim, store, item +WHERE + ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND ss_store_sk = s_store_sk + AND ss_cdemo_sk = cd_demo_sk + AND cd_gender = 'M' + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND d_year = 2002 + AND s_state IN ('TN', 'MO', 'LA', 'GA', 'MI', 'SC') +GROUP BY rollup (i_item_id, s_state) +ORDER BY i_item_id, s_state +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/28.sql b/datafusion/core/tests/tpc-ds/28.sql index e177b3ea79b63..b0a293d622884 100644 --- a/datafusion/core/tests/tpc-ds/28.sql +++ b/datafusion/core/tests/tpc-ds/28.sql @@ -1,54 +1,88 @@ --- Copyright 2015 Transaction Processing Performance Council - -select * -from (select avg(ss_list_price) B1_LP - ,count(ss_list_price) B1_CNT - ,count(distinct ss_list_price) B1_CNTD - from store_sales - where ss_quantity between 0 and 5 - and (ss_list_price between 11 and 11+10 - or ss_coupon_amt between 460 and 460+1000 - or ss_wholesale_cost between 14 and 14+20)) B1, - (select avg(ss_list_price) B2_LP - ,count(ss_list_price) B2_CNT - ,count(distinct ss_list_price) B2_CNTD - from store_sales - where ss_quantity between 6 and 10 - and (ss_list_price between 91 and 91+10 - or ss_coupon_amt between 1430 and 1430+1000 - or ss_wholesale_cost between 32 and 32+20)) B2, - (select avg(ss_list_price) B3_LP - ,count(ss_list_price) B3_CNT - ,count(distinct ss_list_price) B3_CNTD - from store_sales - where ss_quantity between 11 and 15 - and (ss_list_price between 66 and 66+10 - or ss_coupon_amt between 920 and 920+1000 - or ss_wholesale_cost between 4 and 4+20)) B3, - (select avg(ss_list_price) B4_LP - ,count(ss_list_price) B4_CNT - ,count(distinct ss_list_price) B4_CNTD - from store_sales - where ss_quantity between 16 and 20 - and (ss_list_price between 142 and 142+10 - or ss_coupon_amt between 3054 and 3054+1000 - or ss_wholesale_cost between 80 and 80+20)) B4, - (select avg(ss_list_price) B5_LP - ,count(ss_list_price) B5_CNT - ,count(distinct ss_list_price) B5_CNTD - from store_sales - where ss_quantity between 21 and 25 - and (ss_list_price between 135 and 135+10 - or ss_coupon_amt between 14180 and 14180+1000 - or ss_wholesale_cost between 38 and 38+20)) B5, - (select avg(ss_list_price) B6_LP - ,count(ss_list_price) B6_CNT - ,count(distinct ss_list_price) B6_CNTD - from store_sales - where ss_quantity between 26 and 30 - and (ss_list_price between 28 and 28+10 - or ss_coupon_amt between 2513 and 2513+1000 - or ss_wholesale_cost between 42 and 42+20)) B6 -limit 100; - - +SELECT * +FROM + ( + SELECT + avg(ss_list_price) b1_lp, + count(ss_list_price) b1_cnt, + count(DISTINCT ss_list_price) b1_cntd + FROM store_sales + WHERE + ss_quantity BETWEEN 0 AND 5 + AND ( + ss_list_price BETWEEN 8 AND 8 + 10 + OR ss_coupon_amt BETWEEN 459 AND 459 + 1000 + OR ss_wholesale_cost BETWEEN 57 AND 57 + 20 + ) + ) b1, + ( + SELECT + avg(ss_list_price) b2_lp, + count(ss_list_price) b2_cnt, + count(DISTINCT ss_list_price) b2_cntd + FROM store_sales + WHERE + ss_quantity BETWEEN 6 AND 10 + AND ( + ss_list_price BETWEEN 90 AND 90 + 10 + OR ss_coupon_amt BETWEEN 2323 AND 2323 + 1000 + OR ss_wholesale_cost BETWEEN 31 AND 31 + 20 + ) + ) b2, + ( + SELECT + avg(ss_list_price) b3_lp, + count(ss_list_price) b3_cnt, + count(DISTINCT ss_list_price) b3_cntd + FROM store_sales + WHERE + ss_quantity BETWEEN 11 AND 15 + AND ( + ss_list_price BETWEEN 142 AND 142 + 10 + OR ss_coupon_amt BETWEEN 12214 AND 12214 + 1000 + OR ss_wholesale_cost BETWEEN 79 AND 79 + 20 + ) + ) b3, + ( + SELECT + avg(ss_list_price) b4_lp, + count(ss_list_price) b4_cnt, + count(DISTINCT ss_list_price) b4_cntd + FROM store_sales + WHERE + ss_quantity BETWEEN 16 AND 20 + AND ( + ss_list_price BETWEEN 135 AND 135 + 10 + OR ss_coupon_amt BETWEEN 6071 AND 6071 + 1000 + OR ss_wholesale_cost BETWEEN 38 AND 38 + 20 + ) + ) b4, + ( + SELECT + avg(ss_list_price) b5_lp, + count(ss_list_price) b5_cnt, + count(DISTINCT ss_list_price) b5_cntd + FROM store_sales + WHERE + ss_quantity BETWEEN 21 AND 25 + AND ( + ss_list_price BETWEEN 122 AND 122 + 10 + OR ss_coupon_amt BETWEEN 836 AND 836 + 1000 + OR ss_wholesale_cost BETWEEN 17 AND 17 + 20 + ) + ) b5, + ( + SELECT + avg(ss_list_price) b6_lp, + count(ss_list_price) b6_cnt, + count(DISTINCT ss_list_price) b6_cntd + FROM store_sales + WHERE + ss_quantity BETWEEN 26 AND 30 + AND ( + ss_list_price BETWEEN 154 AND 154 + 10 + OR ss_coupon_amt BETWEEN 7326 AND 7326 + 1000 + OR ss_wholesale_cost BETWEEN 7 AND 7 + 20 + ) + ) b6 +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/29.sql b/datafusion/core/tests/tpc-ds/29.sql index d8e7e809a162e..7fb5648dfe1b8 100644 --- a/datafusion/core/tests/tpc-ds/29.sql +++ b/datafusion/core/tests/tpc-ds/29.sql @@ -1,48 +1,37 @@ --- Copyright 2015 Transaction Processing Performance Council - -select - i_item_id - ,i_item_desc - ,s_store_id - ,s_store_name - ,sum(ss_quantity) as store_sales_quantity - ,sum(sr_return_quantity) as store_returns_quantity - ,sum(cs_quantity) as catalog_sales_quantity - from - store_sales - ,store_returns - ,catalog_sales - ,date_dim d1 - ,date_dim d2 - ,date_dim d3 - ,store - ,item - where - d1.d_moy = 4 - and d1.d_year = 1999 - and d1.d_date_sk = ss_sold_date_sk - and i_item_sk = ss_item_sk - and s_store_sk = ss_store_sk - and ss_customer_sk = sr_customer_sk - and ss_item_sk = sr_item_sk - and ss_ticket_number = sr_ticket_number - and sr_returned_date_sk = d2.d_date_sk - and d2.d_moy between 4 and 4 + 3 - and d2.d_year = 1999 - and sr_customer_sk = cs_bill_customer_sk - and sr_item_sk = cs_item_sk - and cs_sold_date_sk = d3.d_date_sk - and d3.d_year in (1999,1999+1,1999+2) - group by - i_item_id - ,i_item_desc - ,s_store_id - ,s_store_name - order by - i_item_id - ,i_item_desc - ,s_store_id - ,s_store_name - limit 100; - - +SELECT + i_item_id, + i_item_desc, + s_store_id, + s_store_name, + sum(ss_quantity) AS store_sales_quantity, + sum(sr_return_quantity) AS store_returns_quantity, + sum(cs_quantity) AS catalog_sales_quantity +FROM + store_sales, + store_returns, + catalog_sales, + date_dim d1, + date_dim d2, + date_dim d3, + store, + item +WHERE + d1.d_moy = 9 + AND d1.d_year = 1999 + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND ss_customer_sk = sr_customer_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND sr_returned_date_sk = d2.d_date_sk + AND d2.d_moy BETWEEN 9 AND 9 + 3 + AND d2.d_year = 1999 + AND sr_customer_sk = cs_bill_customer_sk + AND sr_item_sk = cs_item_sk + AND cs_sold_date_sk = d3.d_date_sk + AND d3.d_year IN (1999, 1999 + 1, 1999 + 2) +GROUP BY i_item_id, i_item_desc, s_store_id, s_store_name +ORDER BY i_item_id, i_item_desc, s_store_id, s_store_name +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/3.sql b/datafusion/core/tests/tpc-ds/3.sql index af376402c660d..b895155d495c8 100644 --- a/datafusion/core/tests/tpc-ds/3.sql +++ b/datafusion/core/tests/tpc-ds/3.sql @@ -1,22 +1,15 @@ --- Copyright 2015 Transaction Processing Performance Council - -select dt.d_year - ,item.i_brand_id brand_id - ,item.i_brand brand - ,sum(ss_ext_sales_price) sum_agg - from date_dim dt - ,store_sales - ,item - where dt.d_date_sk = store_sales.ss_sold_date_sk - and store_sales.ss_item_sk = item.i_item_sk - and item.i_manufact_id = 436 - and dt.d_moy=12 - group by dt.d_year - ,item.i_brand - ,item.i_brand_id - order by dt.d_year - ,sum_agg desc - ,brand_id - limit 100; - - +SELECT + dt.d_year, + item.i_brand_id brand_id, + item.i_brand brand, + sum(ss_ext_sales_price) sum_agg +FROM date_dim dt, store_sales, item +WHERE + dt.d_date_sk = store_sales.ss_sold_date_sk + AND store_sales.ss_item_sk = item.i_item_sk + AND item.i_manufact_id = 128 + AND dt.d_moy = 11 +GROUP BY dt.d_year, item.i_brand, item.i_brand_id +ORDER BY dt.d_year, sum_agg desc, brand_id +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/30.sql b/datafusion/core/tests/tpc-ds/30.sql index d1682e1266340..710fbab7d6fd4 100644 --- a/datafusion/core/tests/tpc-ds/30.sql +++ b/datafusion/core/tests/tpc-ds/30.sql @@ -1,31 +1,53 @@ --- Copyright 2015 Transaction Processing Performance Council - -with customer_total_return as - (select wr_returning_customer_sk as ctr_customer_sk - ,ca_state as ctr_state, - sum(wr_return_amt) as ctr_total_return - from web_returns - ,date_dim - ,customer_address - where wr_returned_date_sk = d_date_sk - and d_year =2002 - and wr_returning_addr_sk = ca_address_sk - group by wr_returning_customer_sk - ,ca_state) - select c_customer_id,c_salutation,c_first_name,c_last_name,c_preferred_cust_flag - ,c_birth_day,c_birth_month,c_birth_year,c_birth_country,c_login,c_email_address - ,c_last_review_date_sk,ctr_total_return - from customer_total_return ctr1 - ,customer_address - ,customer - where ctr1.ctr_total_return > (select avg(ctr_total_return)*1.2 - from customer_total_return ctr2 - where ctr1.ctr_state = ctr2.ctr_state) - and ca_address_sk = c_current_addr_sk - and ca_state = 'IL' - and ctr1.ctr_customer_sk = c_customer_sk - order by c_customer_id,c_salutation,c_first_name,c_last_name,c_preferred_cust_flag - ,c_birth_day,c_birth_month,c_birth_year,c_birth_country,c_login,c_email_address - ,c_last_review_date_sk,ctr_total_return -limit 100; - +WITH + customer_total_return AS ( + SELECT + wr_returning_customer_sk AS ctr_customer_sk, + ca_state AS ctr_state, + sum(wr_return_amt) AS ctr_total_return + FROM web_returns, date_dim, customer_address + WHERE + wr_returned_date_sk = d_date_sk + AND d_year = 2002 + AND wr_returning_addr_sk = ca_address_sk + GROUP BY wr_returning_customer_sk, ca_state + ) +SELECT + c_customer_id, + c_salutation, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_day, + c_birth_month, + c_birth_year, + c_birth_country, + c_login, + c_email_address, + c_last_review_date_sk, + ctr_total_return +FROM customer_total_return ctr1, customer_address, customer +WHERE + ctr1.ctr_total_return > ( + SELECT avg(ctr_total_return) * 1.2 + FROM customer_total_return ctr2 + WHERE ctr1.ctr_state = ctr2.ctr_state + ) + AND ca_address_sk = c_current_addr_sk + AND ca_state = 'GA' + AND ctr1.ctr_customer_sk = c_customer_sk +ORDER BY + c_customer_id, + c_salutation, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_day, + c_birth_month, + c_birth_year, + c_birth_country, + c_login, + c_email_address, + c_last_review_date_sk, + ctr_total_return +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/31.sql b/datafusion/core/tests/tpc-ds/31.sql index f72e384d8dfab..113f8e4d555a6 100644 --- a/datafusion/core/tests/tpc-ds/31.sql +++ b/datafusion/core/tests/tpc-ds/31.sql @@ -1,53 +1,65 @@ --- Copyright 2015 Transaction Processing Performance Council - -with ss as - (select ca_county,d_qoy, d_year,sum(ss_ext_sales_price) as store_sales - from store_sales,date_dim,customer_address - where ss_sold_date_sk = d_date_sk - and ss_addr_sk=ca_address_sk - group by ca_county,d_qoy, d_year), - ws as - (select ca_county,d_qoy, d_year,sum(ws_ext_sales_price) as web_sales - from web_sales,date_dim,customer_address - where ws_sold_date_sk = d_date_sk - and ws_bill_addr_sk=ca_address_sk - group by ca_county,d_qoy, d_year) - select - ss1.ca_county - ,ss1.d_year - ,ws2.web_sales/ws1.web_sales web_q1_q2_increase - ,ss2.store_sales/ss1.store_sales store_q1_q2_increase - ,ws3.web_sales/ws2.web_sales web_q2_q3_increase - ,ss3.store_sales/ss2.store_sales store_q2_q3_increase - from - ss ss1 - ,ss ss2 - ,ss ss3 - ,ws ws1 - ,ws ws2 - ,ws ws3 - where +WITH ss AS (SELECT ca_county, + d_qoy, + d_year, + sum(ss_ext_sales_price) AS store_sales + FROM store_sales, + date_dim, + customer_address + WHERE ss_sold_date_sk = d_date_sk + AND ss_addr_sk = ca_address_sk + GROUP BY ca_county, d_qoy, d_year), + ws AS (SELECT ca_county, d_qoy, d_year, sum(ws_ext_sales_price) AS web_sales + FROM web_sales, + date_dim, + customer_address + WHERE ws_sold_date_sk = d_date_sk + AND ws_bill_addr_sk = ca_address_sk + GROUP BY ca_county, d_qoy, d_year) +SELECT ss1.ca_county, + ss1.d_year, + ws2.web_sales / ws1.web_sales web_q1_q2_increase, + ss2.store_sales / ss1.store_sales store_q1_q2_increase, + ws3.web_sales / ws2.web_sales web_q2_q3_increase, + ss3.store_sales / ss2.store_sales store_q2_q3_increase +FROM ss ss1, + ss ss2, + ss ss3, + ws ws1, + ws ws2, + ws ws3 +WHERE ss1.d_qoy = 1 - and ss1.d_year = 2000 - and ss1.ca_county = ss2.ca_county - and ss2.d_qoy = 2 - and ss2.d_year = 2000 - and ss2.ca_county = ss3.ca_county - and ss3.d_qoy = 3 - and ss3.d_year = 2000 - and ss1.ca_county = ws1.ca_county - and ws1.d_qoy = 1 - and ws1.d_year = 2000 - and ws1.ca_county = ws2.ca_county - and ws2.d_qoy = 2 - and ws2.d_year = 2000 - and ws1.ca_county = ws3.ca_county - and ws3.d_qoy = 3 - and ws3.d_year =2000 - and case when ws1.web_sales > 0 then ws2.web_sales/ws1.web_sales else null end - > case when ss1.store_sales > 0 then ss2.store_sales/ss1.store_sales else null end - and case when ws2.web_sales > 0 then ws3.web_sales/ws2.web_sales else null end - > case when ss2.store_sales > 0 then ss3.store_sales/ss2.store_sales else null end - order by ss1.d_year; - - + AND ss1.d_year = 2000 + AND ss1.ca_county = ss2.ca_county + AND ss2.d_qoy = 2 + AND ss2.d_year = 2000 + AND ss2.ca_county = ss3.ca_county + AND ss3.d_qoy = 3 + AND ss3.d_year = 2000 + AND ss1.ca_county = ws1.ca_county + AND ws1.d_qoy = 1 + AND ws1.d_year = 2000 + AND ws1.ca_county = ws2.ca_county + AND ws2.d_qoy = 2 + AND ws2.d_year = 2000 + AND ws1.ca_county = ws3.ca_county + AND ws3.d_qoy = 3 + AND ws3.d_year = 2000 + AND CASE + WHEN ws1.web_sales > 0 THEN ws2.web_sales / ws1.web_sales + ELSE null + END + > CASE + WHEN ss1.store_sales > 0 THEN ss2.store_sales / ss1.store_sales + ELSE null + END + AND CASE + WHEN ws2.web_sales > 0 THEN ws3.web_sales / ws2.web_sales + ELSE null + END + > CASE + WHEN ss2.store_sales > 0 THEN ss3.store_sales / ss2.store_sales + ELSE null + END +ORDER BY ss1.ca_county +; diff --git a/datafusion/core/tests/tpc-ds/32.sql b/datafusion/core/tests/tpc-ds/32.sql index 3e9690787c245..7e17df6993898 100644 --- a/datafusion/core/tests/tpc-ds/32.sql +++ b/datafusion/core/tests/tpc-ds/32.sql @@ -1,29 +1,19 @@ --- Copyright 2015 Transaction Processing Performance Council - -select sum(cs_ext_discount_amt) as 'excess discount amount' -from - catalog_sales - ,item - ,date_dim -where -i_manufact_id = 269 -and i_item_sk = cs_item_sk -and d_date between '1998-03-18' and - (cast('1998-03-18' as date) + INTERVAL '90 days') -and d_date_sk = cs_sold_date_sk -and cs_ext_discount_amt - > ( - select - 1.3 * avg(cs_ext_discount_amt) - from - catalog_sales - ,date_dim - where - cs_item_sk = i_item_sk - and d_date between '1998-03-18' and - (cast('1998-03-18' as date) + INTERVAL '90 days') - and d_date_sk = cs_sold_date_sk - ) -limit 100; - - +SELECT sum(cs_ext_discount_amt) AS excess_discount_amount +FROM catalog_sales, item, date_dim +WHERE + i_manufact_id = 977 + AND i_item_sk = cs_item_sk + AND d_date + BETWEEN '2000-01-27' AND (cast('2000-01-27' AS date) + INTERVAL '90 days') + AND d_date_sk = cs_sold_date_sk + AND cs_ext_discount_amt > ( + SELECT 1.3 * avg(cs_ext_discount_amt) + FROM catalog_sales, date_dim + WHERE + cs_item_sk = i_item_sk + AND d_date + BETWEEN '2000-01-27' AND (cast('2000-01-27' AS date) + INTERVAL '90 days') + AND d_date_sk = cs_sold_date_sk + ) +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/33.sql b/datafusion/core/tests/tpc-ds/33.sql index 0b1a5d77148b6..a7dec5693acae 100644 --- a/datafusion/core/tests/tpc-ds/33.sql +++ b/datafusion/core/tests/tpc-ds/33.sql @@ -1,76 +1,59 @@ --- Copyright 2015 Transaction Processing Performance Council - -with ss as ( - select - i_manufact_id,sum(ss_ext_sales_price) total_sales - from - store_sales, - date_dim, - customer_address, - item - where - i_manufact_id in (select - i_manufact_id -from - item -where i_category in ('Books')) - and ss_item_sk = i_item_sk - and ss_sold_date_sk = d_date_sk - and d_year = 1999 - and d_moy = 3 - and ss_addr_sk = ca_address_sk - and ca_gmt_offset = -6 - group by i_manufact_id), - cs as ( - select - i_manufact_id,sum(cs_ext_sales_price) total_sales - from - catalog_sales, - date_dim, - customer_address, - item - where - i_manufact_id in (select - i_manufact_id -from - item -where i_category in ('Books')) - and cs_item_sk = i_item_sk - and cs_sold_date_sk = d_date_sk - and d_year = 1999 - and d_moy = 3 - and cs_bill_addr_sk = ca_address_sk - and ca_gmt_offset = -6 - group by i_manufact_id), - ws as ( - select - i_manufact_id,sum(ws_ext_sales_price) total_sales - from - web_sales, - date_dim, - customer_address, - item - where - i_manufact_id in (select - i_manufact_id -from - item -where i_category in ('Books')) - and ws_item_sk = i_item_sk - and ws_sold_date_sk = d_date_sk - and d_year = 1999 - and d_moy = 3 - and ws_bill_addr_sk = ca_address_sk - and ca_gmt_offset = -6 - group by i_manufact_id) - select i_manufact_id ,sum(total_sales) total_sales - from (select * from ss - union all - select * from cs - union all - select * from ws) tmp1 - group by i_manufact_id - order by total_sales -limit 100; - - +WITH + ss AS ( + SELECT i_manufact_id, sum(ss_ext_sales_price) total_sales + FROM store_sales, date_dim, customer_address, item + WHERE + i_manufact_id + IN (SELECT i_manufact_id FROM item WHERE i_category IN ('Electronics')) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1999 + AND d_moy = 5 + AND ss_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_manufact_id + ), + cs AS ( + SELECT i_manufact_id, sum(cs_ext_sales_price) total_sales + FROM catalog_sales, date_dim, customer_address, item + WHERE + i_manufact_id + IN (SELECT i_manufact_id FROM item WHERE i_category IN ('Electronics')) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 5 + AND cs_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_manufact_id + ), + ws AS ( + SELECT i_manufact_id, sum(ws_ext_sales_price) total_sales + FROM web_sales, date_dim, customer_address, item + WHERE + i_manufact_id + IN (SELECT i_manufact_id FROM item WHERE i_category IN ('Electronics')) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 5 + AND ws_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_manufact_id + ) +SELECT i_manufact_id, sum(total_sales) total_sales +FROM + ( + SELECT * + FROM ss + UNION ALL + SELECT * + FROM cs + UNION ALL + SELECT * + FROM ws + ) tmp1 +GROUP BY i_manufact_id +ORDER BY total_sales +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/34.sql b/datafusion/core/tests/tpc-ds/34.sql index af31c6db1de7b..bc40c183afa5e 100644 --- a/datafusion/core/tests/tpc-ds/34.sql +++ b/datafusion/core/tests/tpc-ds/34.sql @@ -1,32 +1,53 @@ --- Copyright 2015 Transaction Processing Performance Council - -select c_last_name - ,c_first_name - ,c_salutation - ,c_preferred_cust_flag - ,ss_ticket_number - ,cnt from - (select ss_ticket_number - ,ss_customer_sk - ,count(*) cnt - from store_sales,date_dim,store,household_demographics - where store_sales.ss_sold_date_sk = date_dim.d_date_sk - and store_sales.ss_store_sk = store.s_store_sk - and store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk - and (date_dim.d_dom between 1 and 3 or date_dim.d_dom between 25 and 28) - and (household_demographics.hd_buy_potential = '>10000' or - household_demographics.hd_buy_potential = '5001-10000') - and household_demographics.hd_vehicle_count > 0 - and (case when household_demographics.hd_vehicle_count > 0 - then household_demographics.hd_dep_count/ household_demographics.hd_vehicle_count - else null - end) > 1.2 - and date_dim.d_year in (1999,1999+1,1999+2) - and store.s_county in ('Daviess County','Franklin Parish','Barrow County','Luce County', - 'Fairfield County','Richland County','Ziebach County','Walker County') - group by ss_ticket_number,ss_customer_sk) dn,customer - where ss_customer_sk = c_customer_sk - and cnt between 15 and 20 - order by c_last_name,c_first_name,c_salutation,c_preferred_cust_flag desc, ss_ticket_number; - - +SELECT c_last_name, + c_first_name, + c_salutation, + c_preferred_cust_flag, + ss_ticket_number, + cnt +FROM (SELECT ss_ticket_number, + ss_customer_sk, + count(*) cnt + FROM store_sales, + date_dim, + store, + household_demographics + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND (date_dim.d_dom BETWEEN 1 AND 3 OR date_dim.d_dom BETWEEN 25 AND 28) + AND ( + household_demographics.hd_buy_potential = '>10000' + OR household_demographics.hd_buy_potential = 'Unknown' + ) + AND household_demographics.hd_vehicle_count > 0 + AND ( + CASE + WHEN household_demographics.hd_vehicle_count > 0 + THEN + household_demographics.hd_dep_count + / household_demographics.hd_vehicle_count + ELSE null + END + ) + > 1.2 + AND date_dim.d_year IN (1999, 1999 + 1, 1999 + 2) + AND store.s_county IN ( + 'Williamson County', + 'Daviess County', + 'Franklin Parish', + 'Barrow County', + 'Fairfield County', + 'Richland County', + 'Ziebach County', + 'Walker County' + ) + GROUP BY ss_ticket_number, ss_customer_sk) dn, + customer +WHERE ss_customer_sk = c_customer_sk + AND cnt BETWEEN 15 AND 20 +ORDER BY c_last_name, + c_first_name, + c_salutation, + c_preferred_cust_flag desc, + ss_ticket_number +; diff --git a/datafusion/core/tests/tpc-ds/35.sql b/datafusion/core/tests/tpc-ds/35.sql index cafce6b595895..245fab69bbc26 100644 --- a/datafusion/core/tests/tpc-ds/35.sql +++ b/datafusion/core/tests/tpc-ds/35.sql @@ -1,59 +1,68 @@ --- Copyright 2015 Transaction Processing Performance Council - -select - ca_state, - cd_gender, - cd_marital_status, - cd_dep_count, - count(*) cnt1, - avg(cd_dep_count), - max(cd_dep_count), - sum(cd_dep_count), - cd_dep_employed_count, - count(*) cnt2, - avg(cd_dep_employed_count), - max(cd_dep_employed_count), - sum(cd_dep_employed_count), - cd_dep_college_count, - count(*) cnt3, - avg(cd_dep_college_count), - max(cd_dep_college_count), - sum(cd_dep_college_count) - from - customer c,customer_address ca,customer_demographics - where - c.c_current_addr_sk = ca.ca_address_sk and - cd_demo_sk = c.c_current_cdemo_sk and - exists (select * - from store_sales,date_dim - where c.c_customer_sk = ss_customer_sk and - ss_sold_date_sk = d_date_sk and - d_year = 1999 and - d_qoy < 4) and - (exists (select * - from web_sales,date_dim - where c.c_customer_sk = ws_bill_customer_sk and - ws_sold_date_sk = d_date_sk and - d_year = 1999 and - d_qoy < 4) or - exists (select * - from catalog_sales,date_dim - where c.c_customer_sk = cs_ship_customer_sk and - cs_sold_date_sk = d_date_sk and - d_year = 1999 and - d_qoy < 4)) - group by ca_state, - cd_gender, - cd_marital_status, - cd_dep_count, - cd_dep_employed_count, - cd_dep_college_count - order by ca_state, - cd_gender, - cd_marital_status, - cd_dep_count, - cd_dep_employed_count, - cd_dep_college_count - limit 100; - - +SELECT + ca_state, + cd_gender, + cd_marital_status, + cd_dep_count, + count(*) cnt1, + min(cd_dep_count), + max(cd_dep_count), + avg(cd_dep_count), + cd_dep_employed_count, + count(*) cnt2, + min(cd_dep_employed_count), + max(cd_dep_employed_count), + avg(cd_dep_employed_count), + cd_dep_college_count, + count(*) cnt3, + min(cd_dep_college_count), + max(cd_dep_college_count), + avg(cd_dep_college_count) +FROM customer c, customer_address ca, customer_demographics +WHERE + c.c_current_addr_sk = ca.ca_address_sk + AND cd_demo_sk = c.c_current_cdemo_sk + AND exists ( + SELECT * + FROM store_sales, date_dim + WHERE + c.c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_qoy < 4 + ) + AND ( + exists ( + SELECT * + FROM web_sales, date_dim + WHERE + c.c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_qoy < 4 + ) + OR exists ( + SELECT * + FROM catalog_sales, date_dim + WHERE + c.c_customer_sk = cs_ship_customer_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_qoy < 4 + ) + ) +GROUP BY + ca_state, + cd_gender, + cd_marital_status, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +ORDER BY + ca_state, + cd_gender, + cd_marital_status, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/36.sql b/datafusion/core/tests/tpc-ds/36.sql index 0186229cecd7e..9dcbc6c71f400 100644 --- a/datafusion/core/tests/tpc-ds/36.sql +++ b/datafusion/core/tests/tpc-ds/36.sql @@ -1,31 +1,25 @@ --- Copyright 2015 Transaction Processing Performance Council - -select - sum(ss_net_profit)/sum(ss_ext_sales_price) as gross_margin - ,i_category - ,i_class - ,grouping(i_category)+grouping(i_class) as lochierarchy - ,rank() over ( - partition by grouping(i_category)+grouping(i_class), - case when grouping(i_class) = 0 then i_category end - order by sum(ss_net_profit)/sum(ss_ext_sales_price) asc) as rank_within_parent - from - store_sales - ,date_dim d1 - ,item - ,store - where - d1.d_year = 2000 - and d1.d_date_sk = ss_sold_date_sk - and i_item_sk = ss_item_sk - and s_store_sk = ss_store_sk - and s_state in ('MO','LA','GA','MI', - 'SC','OH','SD','AL') - group by rollup(i_category,i_class) - order by - lochierarchy desc - ,case when lochierarchy = 0 then i_category end - ,rank_within_parent - limit 100; - - +SELECT + sum(ss_net_profit) / sum(ss_ext_sales_price) AS gross_margin, + i_category, + i_class, + grouping(i_category) + grouping(i_class) AS lochierarchy, + rank() OVER ( + PARTITION BY + grouping(i_category) + grouping(i_class), + CASE WHEN grouping(i_class) = 0 THEN i_category END + ORDER BY sum(ss_net_profit) / sum(ss_ext_sales_price) asc + ) AS rank_within_parent +FROM store_sales, date_dim d1, item, store +WHERE + d1.d_year = 2001 + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND s_state IN ('TN', 'MO', 'LA', 'GA', 'SC', 'OH', 'SD', 'AL') +GROUP BY rollup (i_category, i_class) +ORDER BY + lochierarchy desc, + CASE WHEN lochierarchy = 0 THEN i_category end, + rank_within_parent +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/37.sql b/datafusion/core/tests/tpc-ds/37.sql index ff478d0b6d4cd..b07568cb65403 100644 --- a/datafusion/core/tests/tpc-ds/37.sql +++ b/datafusion/core/tests/tpc-ds/37.sql @@ -1,18 +1,16 @@ --- Copyright 2015 Transaction Processing Performance Council - -select i_item_id - ,i_item_desc - ,i_current_price - from item, inventory, date_dim, catalog_sales - where i_current_price between 22 and 22 + 30 - and inv_item_sk = i_item_sk - and d_date_sk=inv_date_sk - and d_date between cast('2001-06-02' as date) and (cast('2001-06-02' as date) + INTERVAL '60 days') - and i_manufact_id in (678,964,918,849) - and inv_quantity_on_hand between 100 and 500 - and cs_item_sk = i_item_sk - group by i_item_id,i_item_desc,i_current_price - order by i_item_id - limit 100; - - +SELECT i_item_id, i_item_desc, i_current_price +FROM item, inventory, date_dim, catalog_sales +WHERE + i_current_price BETWEEN 68 AND 68 + 30 + AND inv_item_sk = i_item_sk + AND d_date_sk = inv_date_sk + AND d_date BETWEEN cast('2000-02-01' AS date) AND ( + cast('2000-02-01' AS date) + INTERVAL '60 days' + ) + AND i_manufact_id IN (677, 940, 694, 808) + AND inv_quantity_on_hand BETWEEN 100 AND 500 + AND cs_item_sk = i_item_sk +GROUP BY i_item_id, i_item_desc, i_current_price +ORDER BY i_item_id +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/38.sql b/datafusion/core/tests/tpc-ds/38.sql index ab0322220facb..f568308cacbae 100644 --- a/datafusion/core/tests/tpc-ds/38.sql +++ b/datafusion/core/tests/tpc-ds/38.sql @@ -1,24 +1,26 @@ --- Copyright 2015 Transaction Processing Performance Council - -select count(*) from ( - select distinct c_last_name, c_first_name, d_date - from store_sales, date_dim, customer - where store_sales.ss_sold_date_sk = date_dim.d_date_sk - and store_sales.ss_customer_sk = customer.c_customer_sk - and d_month_seq between 1212 and 1212 + 11 - intersect - select distinct c_last_name, c_first_name, d_date - from catalog_sales, date_dim, customer - where catalog_sales.cs_sold_date_sk = date_dim.d_date_sk - and catalog_sales.cs_bill_customer_sk = customer.c_customer_sk - and d_month_seq between 1212 and 1212 + 11 - intersect - select distinct c_last_name, c_first_name, d_date - from web_sales, date_dim, customer - where web_sales.ws_sold_date_sk = date_dim.d_date_sk - and web_sales.ws_bill_customer_sk = customer.c_customer_sk - and d_month_seq between 1212 and 1212 + 11 -) hot_cust -limit 100; - - +SELECT count(*) +FROM + ( + SELECT DISTINCT c_last_name, c_first_name, d_date + FROM store_sales, date_dim, customer + WHERE + store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 + intersect + SELECT DISTINCT c_last_name, c_first_name, d_date + FROM catalog_sales, date_dim, customer + WHERE + catalog_sales.cs_sold_date_sk = date_dim.d_date_sk + AND catalog_sales.cs_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 + intersect + SELECT DISTINCT c_last_name, c_first_name, d_date + FROM web_sales, date_dim, customer + WHERE + web_sales.ws_sold_date_sk = date_dim.d_date_sk + AND web_sales.ws_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 + ) hot_cust +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/39.sql b/datafusion/core/tests/tpc-ds/39.sql index e49f38e039976..556483413c268 100644 --- a/datafusion/core/tests/tpc-ds/39.sql +++ b/datafusion/core/tests/tpc-ds/39.sql @@ -1,55 +1,97 @@ --- Copyright 2015 Transaction Processing Performance Council - -with inv as -(select w_warehouse_name,w_warehouse_sk,i_item_sk,d_moy - ,stdev,mean, case mean when 0 then null else stdev/mean end cov - from(select w_warehouse_name,w_warehouse_sk,i_item_sk,d_moy - ,stddev_samp(inv_quantity_on_hand) stdev,avg(inv_quantity_on_hand) mean - from inventory - ,item - ,warehouse - ,date_dim - where inv_item_sk = i_item_sk - and inv_warehouse_sk = w_warehouse_sk - and inv_date_sk = d_date_sk - and d_year =1998 - group by w_warehouse_name,w_warehouse_sk,i_item_sk,d_moy) foo - where case mean when 0 then 0 else stdev/mean end > 1) -select inv1.w_warehouse_sk,inv1.i_item_sk,inv1.d_moy,inv1.mean, inv1.cov - ,inv2.w_warehouse_sk,inv2.i_item_sk,inv2.d_moy,inv2.mean, inv2.cov -from inv inv1,inv inv2 -where inv1.i_item_sk = inv2.i_item_sk - and inv1.w_warehouse_sk = inv2.w_warehouse_sk - and inv1.d_moy=4 - and inv2.d_moy=4+1 -order by inv1.w_warehouse_sk,inv1.i_item_sk,inv1.d_moy,inv1.mean,inv1.cov - ,inv2.d_moy,inv2.mean, inv2.cov +WITH inv AS (SELECT w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy, + stdev, + mean, + CASE mean WHEN 0 THEN null ELSE stdev / mean END cov + FROM (SELECT w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy, + stddev_samp(inv_quantity_on_hand) stdev, + avg(inv_quantity_on_hand) mean + FROM inventory, + item, + warehouse, + date_dim + WHERE inv_item_sk = i_item_sk + AND inv_warehouse_sk = w_warehouse_sk + AND inv_date_sk = d_date_sk + AND d_year = 2001 + GROUP BY w_warehouse_name, w_warehouse_sk, i_item_sk, d_moy) foo + WHERE CASE mean WHEN 0 THEN 0 ELSE stdev / mean END > 1) +SELECT inv1.w_warehouse_sk, + inv1.i_item_sk, + inv1.d_moy, + inv1.mean, + inv1.cov, + inv2.w_warehouse_sk AS w_warehouse_sk_2, + inv2.i_item_sk AS i_item_sk_2, + inv2.d_moy AS d_moy_2, + inv2.mean AS mean_2, + inv2.cov AS cov_2 +FROM inv inv1, + inv inv2 +WHERE inv1.i_item_sk = inv2.i_item_sk + AND inv1.w_warehouse_sk = inv2.w_warehouse_sk + AND inv1.d_moy = 1 + AND inv2.d_moy = 1 + 1 +ORDER BY inv1.w_warehouse_sk, + inv1.i_item_sk, + inv1.d_moy, + inv1.mean, + inv1.cov, + d_moy_2, + mean_2, + cov_2 ; -with inv as -(select w_warehouse_name,w_warehouse_sk,i_item_sk,d_moy - ,stdev,mean, case mean when 0 then null else stdev/mean end cov - from(select w_warehouse_name,w_warehouse_sk,i_item_sk,d_moy - ,stddev_samp(inv_quantity_on_hand) stdev,avg(inv_quantity_on_hand) mean - from inventory - ,item - ,warehouse - ,date_dim - where inv_item_sk = i_item_sk - and inv_warehouse_sk = w_warehouse_sk - and inv_date_sk = d_date_sk - and d_year =1998 - group by w_warehouse_name,w_warehouse_sk,i_item_sk,d_moy) foo - where case mean when 0 then 0 else stdev/mean end > 1) -select inv1.w_warehouse_sk,inv1.i_item_sk,inv1.d_moy,inv1.mean, inv1.cov - ,inv2.w_warehouse_sk,inv2.i_item_sk,inv2.d_moy,inv2.mean, inv2.cov -from inv inv1,inv inv2 -where inv1.i_item_sk = inv2.i_item_sk - and inv1.w_warehouse_sk = inv2.w_warehouse_sk - and inv1.d_moy=4 - and inv2.d_moy=4+1 - and inv1.cov > 1.5 -order by inv1.w_warehouse_sk,inv1.i_item_sk,inv1.d_moy,inv1.mean,inv1.cov - ,inv2.d_moy,inv2.mean, inv2.cov +WITH inv AS (SELECT w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy, + stdev, + mean, + CASE mean WHEN 0 THEN null ELSE stdev / mean END cov + FROM (SELECT w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy, + stddev_samp(inv_quantity_on_hand) stdev, + avg(inv_quantity_on_hand) mean + FROM inventory, + item, + warehouse, + date_dim + WHERE inv_item_sk = i_item_sk + AND inv_warehouse_sk = w_warehouse_sk + AND inv_date_sk = d_date_sk + AND d_year = 2001 + GROUP BY w_warehouse_name, w_warehouse_sk, i_item_sk, d_moy) foo + WHERE CASE mean WHEN 0 THEN 0 ELSE stdev / mean END > 1) +SELECT inv1.w_warehouse_sk, + inv1.i_item_sk, + inv1.d_moy, + inv1.mean, + inv1.cov, + inv2.w_warehouse_sk AS w_warehouse_sk_2, + inv2.i_item_sk AS i_item_sk_2, + inv2.d_moy AS d_moy_2, + inv2.mean AS mean_2, + inv2.cov AS cov_2 +FROM inv inv1, + inv inv2 +WHERE inv1.i_item_sk = inv2.i_item_sk + AND inv1.w_warehouse_sk = inv2.w_warehouse_sk + AND inv1.d_moy = 1 + AND inv2.d_moy = 1 + 1 + AND inv1.cov > 1.5 +ORDER BY inv1.w_warehouse_sk, + inv1.i_item_sk, + inv1.d_moy, + inv1.mean, + inv1.cov, + d_moy_2, + mean_2, + cov_2 ; - - diff --git a/datafusion/core/tests/tpc-ds/4.sql b/datafusion/core/tests/tpc-ds/4.sql index 30aa0a72d11ae..e0eecde7093d2 100644 --- a/datafusion/core/tests/tpc-ds/4.sql +++ b/datafusion/core/tests/tpc-ds/4.sql @@ -1,117 +1,159 @@ --- Copyright 2015 Transaction Processing Performance Council - -with year_total as ( - select c_customer_id customer_id - ,c_first_name customer_first_name - ,c_last_name customer_last_name - ,c_preferred_cust_flag customer_preferred_cust_flag - ,c_birth_country customer_birth_country - ,c_login customer_login - ,c_email_address customer_email_address - ,d_year dyear - ,sum(((ss_ext_list_price-ss_ext_wholesale_cost-ss_ext_discount_amt)+ss_ext_sales_price)/2) year_total - ,'s' sale_type - from customer - ,store_sales - ,date_dim - where c_customer_sk = ss_customer_sk - and ss_sold_date_sk = d_date_sk - group by c_customer_id - ,c_first_name - ,c_last_name - ,c_preferred_cust_flag - ,c_birth_country - ,c_login - ,c_email_address - ,d_year - union all - select c_customer_id customer_id - ,c_first_name customer_first_name - ,c_last_name customer_last_name - ,c_preferred_cust_flag customer_preferred_cust_flag - ,c_birth_country customer_birth_country - ,c_login customer_login - ,c_email_address customer_email_address - ,d_year dyear - ,sum((((cs_ext_list_price-cs_ext_wholesale_cost-cs_ext_discount_amt)+cs_ext_sales_price)/2) ) year_total - ,'c' sale_type - from customer - ,catalog_sales - ,date_dim - where c_customer_sk = cs_bill_customer_sk - and cs_sold_date_sk = d_date_sk - group by c_customer_id - ,c_first_name - ,c_last_name - ,c_preferred_cust_flag - ,c_birth_country - ,c_login - ,c_email_address - ,d_year -union all - select c_customer_id customer_id - ,c_first_name customer_first_name - ,c_last_name customer_last_name - ,c_preferred_cust_flag customer_preferred_cust_flag - ,c_birth_country customer_birth_country - ,c_login customer_login - ,c_email_address customer_email_address - ,d_year dyear - ,sum((((ws_ext_list_price-ws_ext_wholesale_cost-ws_ext_discount_amt)+ws_ext_sales_price)/2) ) year_total - ,'w' sale_type - from customer - ,web_sales - ,date_dim - where c_customer_sk = ws_bill_customer_sk - and ws_sold_date_sk = d_date_sk - group by c_customer_id - ,c_first_name - ,c_last_name - ,c_preferred_cust_flag - ,c_birth_country - ,c_login - ,c_email_address - ,d_year - ) - select - t_s_secyear.customer_id - ,t_s_secyear.customer_first_name - ,t_s_secyear.customer_last_name - ,t_s_secyear.customer_email_address - from year_total t_s_firstyear - ,year_total t_s_secyear - ,year_total t_c_firstyear - ,year_total t_c_secyear - ,year_total t_w_firstyear - ,year_total t_w_secyear - where t_s_secyear.customer_id = t_s_firstyear.customer_id - and t_s_firstyear.customer_id = t_c_secyear.customer_id - and t_s_firstyear.customer_id = t_c_firstyear.customer_id - and t_s_firstyear.customer_id = t_w_firstyear.customer_id - and t_s_firstyear.customer_id = t_w_secyear.customer_id - and t_s_firstyear.sale_type = 's' - and t_c_firstyear.sale_type = 'c' - and t_w_firstyear.sale_type = 'w' - and t_s_secyear.sale_type = 's' - and t_c_secyear.sale_type = 'c' - and t_w_secyear.sale_type = 'w' - and t_s_firstyear.dyear = 2001 - and t_s_secyear.dyear = 2001+1 - and t_c_firstyear.dyear = 2001 - and t_c_secyear.dyear = 2001+1 - and t_w_firstyear.dyear = 2001 - and t_w_secyear.dyear = 2001+1 - and t_s_firstyear.year_total > 0 - and t_c_firstyear.year_total > 0 - and t_w_firstyear.year_total > 0 - and case when t_c_firstyear.year_total > 0 then t_c_secyear.year_total / t_c_firstyear.year_total else null end - > case when t_s_firstyear.year_total > 0 then t_s_secyear.year_total / t_s_firstyear.year_total else null end - and case when t_c_firstyear.year_total > 0 then t_c_secyear.year_total / t_c_firstyear.year_total else null end - > case when t_w_firstyear.year_total > 0 then t_w_secyear.year_total / t_w_firstyear.year_total else null end - order by t_s_secyear.customer_id - ,t_s_secyear.customer_first_name - ,t_s_secyear.customer_last_name - ,t_s_secyear.customer_email_address -limit 100; - - +WITH + year_total AS ( + SELECT + c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum( + ( + (ss_ext_list_price - ss_ext_wholesale_cost - ss_ext_discount_amt) + + ss_ext_sales_price + ) + / 2 + ) year_total, + 's' sale_type + FROM customer, store_sales, date_dim + WHERE c_customer_sk = ss_customer_sk AND ss_sold_date_sk = d_date_sk + GROUP BY + c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year + UNION ALL + SELECT + c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum( + ( + ( + ( + cs_ext_list_price + - cs_ext_wholesale_cost + - cs_ext_discount_amt + ) + + cs_ext_sales_price + ) + / 2 + ) + ) year_total, + 'c' sale_type + FROM customer, catalog_sales, date_dim + WHERE c_customer_sk = cs_bill_customer_sk AND cs_sold_date_sk = d_date_sk + GROUP BY + c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year + UNION ALL + SELECT + c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum( + ( + ( + ( + ws_ext_list_price + - ws_ext_wholesale_cost + - ws_ext_discount_amt + ) + + ws_ext_sales_price + ) + / 2 + ) + ) year_total, + 'w' sale_type + FROM customer, web_sales, date_dim + WHERE c_customer_sk = ws_bill_customer_sk AND ws_sold_date_sk = d_date_sk + GROUP BY + c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year + ) +SELECT + t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name, + t_s_secyear.customer_preferred_cust_flag +FROM + year_total t_s_firstyear, + year_total t_s_secyear, + year_total t_c_firstyear, + year_total t_c_secyear, + year_total t_w_firstyear, + year_total t_w_secyear +WHERE + t_s_secyear.customer_id = t_s_firstyear.customer_id + AND t_s_firstyear.customer_id = t_c_secyear.customer_id + AND t_s_firstyear.customer_id = t_c_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_secyear.customer_id + AND t_s_firstyear.sale_type = 's' + AND t_c_firstyear.sale_type = 'c' + AND t_w_firstyear.sale_type = 'w' + AND t_s_secyear.sale_type = 's' + AND t_c_secyear.sale_type = 'c' + AND t_w_secyear.sale_type = 'w' + AND t_s_firstyear.dyear = 2001 + AND t_s_secyear.dyear = 2001 + 1 + AND t_c_firstyear.dyear = 2001 + AND t_c_secyear.dyear = 2001 + 1 + AND t_w_firstyear.dyear = 2001 + AND t_w_secyear.dyear = 2001 + 1 + AND t_s_firstyear.year_total > 0 + AND t_c_firstyear.year_total > 0 + AND t_w_firstyear.year_total > 0 + AND CASE + WHEN t_c_firstyear.year_total > 0 + THEN t_c_secyear.year_total / t_c_firstyear.year_total + ELSE null + END > CASE + WHEN t_s_firstyear.year_total > 0 + THEN t_s_secyear.year_total / t_s_firstyear.year_total + ELSE null + END + AND CASE + WHEN t_c_firstyear.year_total > 0 + THEN t_c_secyear.year_total / t_c_firstyear.year_total + ELSE null + END > CASE + WHEN t_w_firstyear.year_total > 0 + THEN t_w_secyear.year_total / t_w_firstyear.year_total + ELSE null + END +ORDER BY + t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name, + t_s_secyear.customer_preferred_cust_flag +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/40.sql b/datafusion/core/tests/tpc-ds/40.sql index 883148a0af79f..b159c3cba333a 100644 --- a/datafusion/core/tests/tpc-ds/40.sql +++ b/datafusion/core/tests/tpc-ds/40.sql @@ -1,29 +1,35 @@ --- Copyright 2015 Transaction Processing Performance Council - -select - w_state - ,i_item_id - ,sum(case when (cast(d_date as date) < cast ('1998-04-08' as date)) - then cs_sales_price - coalesce(cr_refunded_cash,0) else 0 end) as sales_before - ,sum(case when (cast(d_date as date) >= cast ('1998-04-08' as date)) - then cs_sales_price - coalesce(cr_refunded_cash,0) else 0 end) as sales_after - from - catalog_sales left outer join catalog_returns on - (cs_order_number = cr_order_number - and cs_item_sk = cr_item_sk) - ,warehouse - ,item - ,date_dim - where - i_current_price between 0.99 and 1.49 - and i_item_sk = cs_item_sk - and cs_warehouse_sk = w_warehouse_sk - and cs_sold_date_sk = d_date_sk - and d_date between (cast ('1998-04-08' as date) - INTERVAL '30 days') - and (cast ('1998-04-08' as date) + INTERVAL '30 days') - group by - w_state,i_item_id - order by w_state,i_item_id -limit 100; - - +SELECT + w_state, + i_item_id, + sum( + CASE + WHEN (cast(d_date AS date) < cast('2000-03-11' AS date)) + THEN cs_sales_price - coalesce(cr_refunded_cash, 0) + ELSE 0 + END + ) AS sales_before, + sum( + CASE + WHEN (cast(d_date AS date) >= cast('2000-03-11' AS date)) + THEN cs_sales_price - coalesce(cr_refunded_cash, 0) + ELSE 0 + END + ) AS sales_after +FROM catalog_sales +LEFT OUTER JOIN + catalog_returns ON (cs_order_number = cr_order_number AND cs_item_sk = cr_item_sk), + warehouse, + item, + date_dim +WHERE + i_current_price BETWEEN 0.99 AND 1.49 + AND i_item_sk = cs_item_sk + AND cs_warehouse_sk = w_warehouse_sk + AND cs_sold_date_sk = d_date_sk + AND d_date BETWEEN (cast('2000-03-11' AS date) - INTERVAL '30 days') AND ( + cast('2000-03-11' AS date) + INTERVAL '30 days' + ) +GROUP BY w_state, i_item_id +ORDER BY w_state, i_item_id +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/41.sql b/datafusion/core/tests/tpc-ds/41.sql index 036b97f853c80..e3b19296d1f65 100644 --- a/datafusion/core/tests/tpc-ds/41.sql +++ b/datafusion/core/tests/tpc-ds/41.sql @@ -1,53 +1,71 @@ --- Copyright 2015 Transaction Processing Performance Council - -select distinct(i_product_name) - from item i1 - where i_manufact_id between 742 and 742+40 - and (select count(*) as item_cnt - from item - where (i_manufact = i1.i_manufact and - ((i_category = 'Women' and - (i_color = 'orchid' or i_color = 'papaya') and - (i_units = 'Pound' or i_units = 'Lb') and - (i_size = 'petite' or i_size = 'medium') - ) or - (i_category = 'Women' and - (i_color = 'burlywood' or i_color = 'navy') and - (i_units = 'Bundle' or i_units = 'Each') and - (i_size = 'N/A' or i_size = 'extra large') - ) or - (i_category = 'Men' and - (i_color = 'bisque' or i_color = 'azure') and - (i_units = 'N/A' or i_units = 'Tsp') and - (i_size = 'small' or i_size = 'large') - ) or - (i_category = 'Men' and - (i_color = 'chocolate' or i_color = 'cornflower') and - (i_units = 'Bunch' or i_units = 'Gross') and - (i_size = 'petite' or i_size = 'medium') - ))) or - (i_manufact = i1.i_manufact and - ((i_category = 'Women' and - (i_color = 'salmon' or i_color = 'midnight') and - (i_units = 'Oz' or i_units = 'Box') and - (i_size = 'petite' or i_size = 'medium') - ) or - (i_category = 'Women' and - (i_color = 'snow' or i_color = 'steel') and - (i_units = 'Carton' or i_units = 'Tbl') and - (i_size = 'N/A' or i_size = 'extra large') - ) or - (i_category = 'Men' and - (i_color = 'purple' or i_color = 'gainsboro') and - (i_units = 'Dram' or i_units = 'Unknown') and - (i_size = 'small' or i_size = 'large') - ) or - (i_category = 'Men' and - (i_color = 'metallic' or i_color = 'forest') and - (i_units = 'Gram' or i_units = 'Ounce') and - (i_size = 'petite' or i_size = 'medium') - )))) > 0 - order by i_product_name - limit 100; - - +SELECT DISTINCT (i_product_name) +FROM item i1 +WHERE + i_manufact_id BETWEEN 738 AND 738 + 40 + AND ( + SELECT count(*) AS item_cnt + FROM item + WHERE + ( + i_manufact = i1.i_manufact + AND ( + ( + i_category = 'Women' + AND (i_color = 'powder' OR i_color = 'khaki') + AND (i_units = 'Ounce' OR i_units = 'Oz') + AND (i_size = 'medium' OR i_size = 'extra large') + ) + OR ( + i_category = 'Women' + AND (i_color = 'brown' OR i_color = 'honeydew') + AND (i_units = 'Bunch' OR i_units = 'Ton') + AND (i_size = 'N/A' OR i_size = 'small') + ) + OR ( + i_category = 'Men' + AND (i_color = 'floral' OR i_color = 'deep') + AND (i_units = 'N/A' OR i_units = 'Dozen') + AND (i_size = 'petite' OR i_size = 'large') + ) + OR ( + i_category = 'Men' + AND (i_color = 'light' OR i_color = 'cornflower') + AND (i_units = 'Box' OR i_units = 'Pound') + AND (i_size = 'medium' OR i_size = 'extra large') + ) + ) + ) + OR ( + i_manufact = i1.i_manufact + AND ( + ( + i_category = 'Women' + AND (i_color = 'midnight' OR i_color = 'snow') + AND (i_units = 'Pallet' OR i_units = 'Gross') + AND (i_size = 'medium' OR i_size = 'extra large') + ) + OR ( + i_category = 'Women' + AND (i_color = 'cyan' OR i_color = 'papaya') + AND (i_units = 'Cup' OR i_units = 'Dram') + AND (i_size = 'N/A' OR i_size = 'small') + ) + OR ( + i_category = 'Men' + AND (i_color = 'orange' OR i_color = 'frosted') + AND (i_units = 'Each' OR i_units = 'Tbl') + AND (i_size = 'petite' OR i_size = 'large') + ) + OR ( + i_category = 'Men' + AND (i_color = 'forest' OR i_color = 'ghost') + AND (i_units = 'Lb' OR i_units = 'Bundle') + AND (i_size = 'medium' OR i_size = 'extra large') + ) + ) + ) + ) + > 0 +ORDER BY i_product_name +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/42.sql b/datafusion/core/tests/tpc-ds/42.sql index cb3b789a81f19..d478ed66d2263 100644 --- a/datafusion/core/tests/tpc-ds/42.sql +++ b/datafusion/core/tests/tpc-ds/42.sql @@ -1,23 +1,12 @@ --- Copyright 2015 Transaction Processing Performance Council - -select dt.d_year - ,item.i_category_id - ,item.i_category - ,sum(ss_ext_sales_price) - from date_dim dt - ,store_sales - ,item - where dt.d_date_sk = store_sales.ss_sold_date_sk - and store_sales.ss_item_sk = item.i_item_sk - and item.i_manager_id = 1 - and dt.d_moy=12 - and dt.d_year=1998 - group by dt.d_year - ,item.i_category_id - ,item.i_category - order by sum(ss_ext_sales_price) desc,dt.d_year - ,item.i_category_id - ,item.i_category -limit 100 ; - - +SELECT dt.d_year, item.i_category_id, item.i_category, sum(ss_ext_sales_price) +FROM date_dim dt, store_sales, item +WHERE + dt.d_date_sk = store_sales.ss_sold_date_sk + AND store_sales.ss_item_sk = item.i_item_sk + AND item.i_manager_id = 1 + AND dt.d_moy = 11 + AND dt.d_year = 2000 +GROUP BY dt.d_year, item.i_category_id, item.i_category +ORDER BY sum(ss_ext_sales_price) desc, dt.d_year, item.i_category_id, item.i_category +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/43.sql b/datafusion/core/tests/tpc-ds/43.sql index ca9db995b0a6d..551e6a1c79c2c 100644 --- a/datafusion/core/tests/tpc-ds/43.sql +++ b/datafusion/core/tests/tpc-ds/43.sql @@ -1,20 +1,29 @@ --- Copyright 2015 Transaction Processing Performance Council - -select s_store_name, s_store_id, - sum(case when (d_day_name='Sunday') then ss_sales_price else null end) sun_sales, - sum(case when (d_day_name='Monday') then ss_sales_price else null end) mon_sales, - sum(case when (d_day_name='Tuesday') then ss_sales_price else null end) tue_sales, - sum(case when (d_day_name='Wednesday') then ss_sales_price else null end) wed_sales, - sum(case when (d_day_name='Thursday') then ss_sales_price else null end) thu_sales, - sum(case when (d_day_name='Friday') then ss_sales_price else null end) fri_sales, - sum(case when (d_day_name='Saturday') then ss_sales_price else null end) sat_sales - from date_dim, store_sales, store - where d_date_sk = ss_sold_date_sk and - s_store_sk = ss_store_sk and - s_gmt_offset = -6 and - d_year = 1998 - group by s_store_name, s_store_id - order by s_store_name, s_store_id,sun_sales,mon_sales,tue_sales,wed_sales,thu_sales,fri_sales,sat_sales - limit 100; - - +SELECT + s_store_name, + s_store_id, + sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE null END) sun_sales, + sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE null END) mon_sales, + sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE null END) tue_sales, + sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE null END) wed_sales, + sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE null END) thu_sales, + sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE null END) fri_sales, + sum(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE null END) sat_sales +FROM date_dim, store_sales, store +WHERE + d_date_sk = ss_sold_date_sk + AND s_store_sk = ss_store_sk + AND s_gmt_offset = -5 + AND d_year = 2000 +GROUP BY s_store_name, s_store_id +ORDER BY + s_store_name, + s_store_id, + sun_sales, + mon_sales, + tue_sales, + wed_sales, + thu_sales, + fri_sales, + sat_sales +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/44.sql b/datafusion/core/tests/tpc-ds/44.sql index 923b531b70b89..424e573833a01 100644 --- a/datafusion/core/tests/tpc-ds/44.sql +++ b/datafusion/core/tests/tpc-ds/44.sql @@ -1,36 +1,60 @@ --- Copyright 2015 Transaction Processing Performance Council - -select asceding.rnk, i1.i_product_name best_performing, i2.i_product_name worst_performing -from(select * - from (select item_sk,rank() over (order by rank_col asc) rnk - from (select ss_item_sk item_sk,avg(ss_net_profit) rank_col - from store_sales ss1 - where ss_store_sk = 50 - group by ss_item_sk - having avg(ss_net_profit) > 0.9*(select avg(ss_net_profit) rank_col - from store_sales - where ss_store_sk = 50 - and ss_hdemo_sk is null - group by ss_store_sk))V1)V11 - where rnk < 11) asceding, - (select * - from (select item_sk,rank() over (order by rank_col desc) rnk - from (select ss_item_sk item_sk,avg(ss_net_profit) rank_col - from store_sales ss1 - where ss_store_sk = 50 - group by ss_item_sk - having avg(ss_net_profit) > 0.9*(select avg(ss_net_profit) rank_col - from store_sales - where ss_store_sk = 50 - and ss_hdemo_sk is null - group by ss_store_sk))V2)V21 - where rnk < 11) descending, -item i1, -item i2 -where asceding.rnk = descending.rnk - and i1.i_item_sk=asceding.item_sk - and i2.i_item_sk=descending.item_sk -order by asceding.rnk -limit 100; - - +SELECT + asceding.rnk, i1.i_product_name best_performing, i2.i_product_name worst_performing +FROM + ( + SELECT * + FROM + ( + SELECT item_sk, rank() OVER (ORDER BY rank_col asc) rnk + FROM + ( + SELECT ss_item_sk item_sk, avg(ss_net_profit) rank_col + FROM store_sales ss1 + WHERE ss_store_sk = 4 + GROUP BY ss_item_sk + having + avg(ss_net_profit) + > 0.9 + * ( + SELECT avg(ss_net_profit) rank_col + FROM store_sales + WHERE ss_store_sk = 4 AND ss_hdemo_sk IS NULL + GROUP BY ss_store_sk + ) + ) v1 + ) v11 + WHERE rnk < 11 + ) asceding, + ( + SELECT * + FROM + ( + SELECT item_sk, rank() OVER (ORDER BY rank_col desc) rnk + FROM + ( + SELECT ss_item_sk item_sk, avg(ss_net_profit) rank_col + FROM store_sales ss1 + WHERE ss_store_sk = 4 + GROUP BY ss_item_sk + having + avg(ss_net_profit) + > 0.9 + * ( + SELECT avg(ss_net_profit) rank_col + FROM store_sales + WHERE ss_store_sk = 4 AND ss_hdemo_sk IS NULL + GROUP BY ss_store_sk + ) + ) v2 + ) v21 + WHERE rnk < 11 + ) descending, + item i1, + item i2 +WHERE + asceding.rnk = descending.rnk + AND i1.i_item_sk = asceding.item_sk + AND i2.i_item_sk = descending.item_sk +ORDER BY asceding.rnk +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/45.sql b/datafusion/core/tests/tpc-ds/45.sql index ff7420f00fdd8..1111634c6d58d 100644 --- a/datafusion/core/tests/tpc-ds/45.sql +++ b/datafusion/core/tests/tpc-ds/45.sql @@ -1,21 +1,31 @@ --- Copyright 2015 Transaction Processing Performance Council - -select ca_zip, ca_county, sum(ws_sales_price) - from web_sales, customer, customer_address, date_dim, item - where ws_bill_customer_sk = c_customer_sk - and c_current_addr_sk = ca_address_sk - and ws_item_sk = i_item_sk - and ( substr(ca_zip,1,5) in ('85669', '86197','88274','83405','86475', '85392', '85460', '80348', '81792') - or - i_item_id in (select i_item_id - from item - where i_item_sk in (2, 3, 5, 7, 11, 13, 17, 19, 23, 29) - ) - ) - and ws_sold_date_sk = d_date_sk - and d_qoy = 2 and d_year = 2000 - group by ca_zip, ca_county - order by ca_zip, ca_county - limit 100; - - +SELECT ca_zip, ca_city, sum(ws_sales_price) +FROM web_sales, customer, customer_address, date_dim, item +WHERE + ws_bill_customer_sk = c_customer_sk + AND c_current_addr_sk = ca_address_sk + AND ws_item_sk = i_item_sk + AND ( + substr(ca_zip, 1, 5) IN ( + '85669', + '86197', + '88274', + '83405', + '86475', + '85392', + '85460', + '80348', + '81792' + ) + OR i_item_id IN ( + SELECT i_item_id + FROM item + WHERE i_item_sk IN (2, 3, 5, 7, 11, 13, 17, 19, 23, 29) + ) + ) + AND ws_sold_date_sk = d_date_sk + AND d_qoy = 2 + AND d_year = 2001 +GROUP BY ca_zip, ca_city +ORDER BY ca_zip, ca_city +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/46.sql b/datafusion/core/tests/tpc-ds/46.sql index 2f6218a09b3eb..a2d2fd808dfdd 100644 --- a/datafusion/core/tests/tpc-ds/46.sql +++ b/datafusion/core/tests/tpc-ds/46.sql @@ -1,36 +1,33 @@ --- Copyright 2015 Transaction Processing Performance Council - -select c_last_name - ,c_first_name - ,ca_city - ,bought_city - ,ss_ticket_number - ,amt,profit - from - (select ss_ticket_number - ,ss_customer_sk - ,ca_city bought_city - ,sum(ss_coupon_amt) amt - ,sum(ss_net_profit) profit - from store_sales,date_dim,store,household_demographics,customer_address - where store_sales.ss_sold_date_sk = date_dim.d_date_sk - and store_sales.ss_store_sk = store.s_store_sk - and store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk - and store_sales.ss_addr_sk = customer_address.ca_address_sk - and (household_demographics.hd_dep_count = 6 or - household_demographics.hd_vehicle_count= 3) - and date_dim.d_dow in (6,0) - and date_dim.d_year in (1999,1999+1,1999+2) - and store.s_city in ('Oakland','Riverside','Union','Salem','Greenwood') - group by ss_ticket_number,ss_customer_sk,ss_addr_sk,ca_city) dn,customer,customer_address current_addr - where ss_customer_sk = c_customer_sk - and customer.c_current_addr_sk = current_addr.ca_address_sk - and current_addr.ca_city <> bought_city - order by c_last_name - ,c_first_name - ,ca_city - ,bought_city - ,ss_ticket_number - limit 100; - - +SELECT c_last_name, c_first_name, ca_city, bought_city, ss_ticket_number, amt, profit +FROM + ( + SELECT + ss_ticket_number, + ss_customer_sk, + ca_city bought_city, + sum(ss_coupon_amt) amt, + sum(ss_net_profit) profit + FROM store_sales, date_dim, store, household_demographics, customer_address + WHERE + store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND store_sales.ss_addr_sk = customer_address.ca_address_sk + AND ( + household_demographics.hd_dep_count = 4 + OR household_demographics.hd_vehicle_count = 3 + ) + AND date_dim.d_dow IN (6, 0) + AND date_dim.d_year IN (1999, 1999 + 1, 1999 + 2) + AND store.s_city IN ('Fairview', 'Midway', 'Oakland', 'Riverside', 'Union') + GROUP BY ss_ticket_number, ss_customer_sk, ss_addr_sk, ca_city + ) dn, + customer, + customer_address current_addr +WHERE + ss_customer_sk = c_customer_sk + AND customer.c_current_addr_sk = current_addr.ca_address_sk + AND current_addr.ca_city <> bought_city +ORDER BY c_last_name, c_first_name, ca_city, bought_city, ss_ticket_number +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/47.sql b/datafusion/core/tests/tpc-ds/47.sql index 18e61ceb176b6..17da6ce28e7e7 100644 --- a/datafusion/core/tests/tpc-ds/47.sql +++ b/datafusion/core/tests/tpc-ds/47.sql @@ -1,52 +1,69 @@ --- Copyright 2015 Transaction Processing Performance Council - -with v1 as( - select i_category, i_brand, - s_store_name, s_company_name, - d_year, d_moy, - sum(ss_sales_price) sum_sales, - avg(sum(ss_sales_price)) over - (partition by i_category, i_brand, - s_store_name, s_company_name, d_year) - avg_monthly_sales, - rank() over - (partition by i_category, i_brand, - s_store_name, s_company_name - order by d_year, d_moy) rn - from item, store_sales, date_dim, store - where ss_item_sk = i_item_sk and - ss_sold_date_sk = d_date_sk and - ss_store_sk = s_store_sk and - ( - d_year = 2000 or - ( d_year = 2000-1 and d_moy =12) or - ( d_year = 2000+1 and d_moy =1) - ) - group by i_category, i_brand, - s_store_name, s_company_name, - d_year, d_moy), - v2 as( - select v1.i_category, v1.i_brand - ,v1.d_year, v1.d_moy - ,v1.avg_monthly_sales - ,v1.sum_sales, v1_lag.sum_sales psum, v1_lead.sum_sales nsum - from v1, v1 v1_lag, v1 v1_lead - where v1.i_category = v1_lag.i_category and - v1.i_category = v1_lead.i_category and - v1.i_brand = v1_lag.i_brand and - v1.i_brand = v1_lead.i_brand and - v1.s_store_name = v1_lag.s_store_name and - v1.s_store_name = v1_lead.s_store_name and - v1.s_company_name = v1_lag.s_company_name and - v1.s_company_name = v1_lead.s_company_name and - v1.rn = v1_lag.rn + 1 and - v1.rn = v1_lead.rn - 1) - select * - from v2 - where d_year = 2000 and - avg_monthly_sales > 0 and - case when avg_monthly_sales > 0 then abs(sum_sales - avg_monthly_sales) / avg_monthly_sales else null end > 0.1 - order by sum_sales - avg_monthly_sales, nsum - limit 100; - - +WITH + v1 AS ( + SELECT + i_category, + i_brand, + s_store_name, + s_company_name, + d_year, + d_moy, + sum(ss_sales_price) sum_sales, + avg(sum(ss_sales_price)) OVER ( + PARTITION BY i_category, i_brand, s_store_name, s_company_name, d_year + ) + avg_monthly_sales, + rank() OVER ( + PARTITION BY i_category, i_brand, s_store_name, s_company_name + ORDER BY d_year, d_moy + ) rn + FROM item, store_sales, date_dim, store + WHERE + ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND ( + d_year = 1999 + OR (d_year = 1999 - 1 AND d_moy = 12) + OR (d_year = 1999 + 1 AND d_moy = 1) + ) + GROUP BY i_category, i_brand, s_store_name, s_company_name, d_year, d_moy + ), + v2 AS ( + SELECT + v1.i_category, + v1.i_brand, + v1.s_store_name, + v1.s_company_name, + v1.d_year, + v1.d_moy, + v1.avg_monthly_sales, + v1.sum_sales, + v1_lag.sum_sales psum, + v1_lead.sum_sales nsum + FROM v1, v1 v1_lag, v1 v1_lead + WHERE + v1.i_category = v1_lag.i_category + AND v1.i_category = v1_lead.i_category + AND v1.i_brand = v1_lag.i_brand + AND v1.i_brand = v1_lead.i_brand + AND v1.s_store_name = v1_lag.s_store_name + AND v1.s_store_name = v1_lead.s_store_name + AND v1.s_company_name = v1_lag.s_company_name + AND v1.s_company_name = v1_lead.s_company_name + AND v1.rn = v1_lag.rn + 1 + AND v1.rn = v1_lead.rn - 1 + ) +SELECT * +FROM v2 +WHERE + d_year = 1999 + AND avg_monthly_sales > 0 + AND CASE + WHEN avg_monthly_sales > 0 + THEN abs(sum_sales - avg_monthly_sales) / avg_monthly_sales + ELSE null + END + > 0.1 +ORDER BY sum_sales - avg_monthly_sales, 3 +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/48.sql b/datafusion/core/tests/tpc-ds/48.sql index 057a6fb9a29f9..a9039509ea550 100644 --- a/datafusion/core/tests/tpc-ds/48.sql +++ b/datafusion/core/tests/tpc-ds/48.sql @@ -1,68 +1,50 @@ --- Copyright 2015 Transaction Processing Performance Council - -select sum (ss_quantity) - from store_sales, store, customer_demographics, customer_address, date_dim - where s_store_sk = ss_store_sk - and ss_sold_date_sk = d_date_sk and d_year = 1998 - and - ( - ( - cd_demo_sk = ss_cdemo_sk - and - cd_marital_status = 'M' - and - cd_education_status = '4 yr Degree' - and - ss_sales_price between 100.00 and 150.00 - ) - or - ( - cd_demo_sk = ss_cdemo_sk - and - cd_marital_status = 'D' - and - cd_education_status = 'Primary' - and - ss_sales_price between 50.00 and 100.00 - ) - or - ( - cd_demo_sk = ss_cdemo_sk - and - cd_marital_status = 'U' - and - cd_education_status = 'Advanced Degree' - and - ss_sales_price between 150.00 and 200.00 - ) - ) - and - ( - ( - ss_addr_sk = ca_address_sk - and - ca_country = 'United States' - and - ca_state in ('KY', 'GA', 'NM') - and ss_net_profit between 0 and 2000 - ) - or - (ss_addr_sk = ca_address_sk - and - ca_country = 'United States' - and - ca_state in ('MT', 'OR', 'IN') - and ss_net_profit between 150 and 3000 - ) - or - (ss_addr_sk = ca_address_sk - and - ca_country = 'United States' - and - ca_state in ('WI', 'MO', 'WV') - and ss_net_profit between 50 and 25000 - ) - ) +SELECT sum(ss_quantity) +FROM store_sales, + store, + customer_demographics, + customer_address, + date_dim +WHERE s_store_sk = ss_store_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2000 + AND ( + ( + cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'M' + AND cd_education_status = '4 yr Degree' + AND ss_sales_price BETWEEN 100.00 AND 150.00 + ) + OR ( + cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'D' + AND cd_education_status = '2 yr Degree' + AND ss_sales_price BETWEEN 50.00 AND 100.00 + ) + OR ( + cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND ss_sales_price BETWEEN 150.00 AND 200.00 + ) + ) + AND ( + ( + ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('CO', 'OH', 'TX') + AND ss_net_profit BETWEEN 0 AND 2000 + ) + OR ( + ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('OR', 'MN', 'KY') + AND ss_net_profit BETWEEN 150 AND 3000 + ) + OR ( + ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('VA', 'CA', 'MS') + AND ss_net_profit BETWEEN 50 AND 25000 + ) + ) ; - - diff --git a/datafusion/core/tests/tpc-ds/49.sql b/datafusion/core/tests/tpc-ds/49.sql index 219877719f227..f317e06c4a109 100644 --- a/datafusion/core/tests/tpc-ds/49.sql +++ b/datafusion/core/tests/tpc-ds/49.sql @@ -1,130 +1,145 @@ --- Copyright 2015 Transaction Processing Performance Council - -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)) as decimal(15,4))/ - cast(sum(coalesce(ws.ws_net_paid,0)) as decimal(15,4) )) as currency_ratio - from - web_sales ws left outer join web_returns wr - on (ws.ws_order_number = wr.wr_order_number and - ws.ws_item_sk = wr.wr_item_sk) - ,date_dim - where - wr.wr_return_amt > 10000 - and ws.ws_net_profit > 1 - and ws.ws_net_paid > 0 - 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)) as decimal(15,4))/ - cast(sum(coalesce(cs.cs_net_paid,0)) as decimal(15,4) )) as currency_ratio - from - catalog_sales cs left outer join catalog_returns cr - on (cs.cs_order_number = cr.cr_order_number and - cs.cs_item_sk = cr.cr_item_sk) - ,date_dim - where - cr.cr_return_amount > 10000 - and cs.cs_net_profit > 1 - and cs.cs_net_paid > 0 - 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)) as decimal(15,4))/cast(sum(coalesce(sts.ss_net_paid,0)) as decimal(15,4) )) as currency_ratio - from - store_sales sts left outer join store_returns sr - on (sts.ss_ticket_number = sr.sr_ticket_number and sts.ss_item_sk = sr.sr_item_sk) - ,date_dim - where - sr.sr_return_amt > 10000 - and sts.ss_net_profit > 1 - and sts.ss_net_paid > 0 - 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 - ) - ) - order by 1,4,5,2 - limit 100; - - +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)) AS decimal(15, 4)) + / cast(sum(coalesce(ws.ws_net_paid, 0)) AS decimal(15, 4)) + ) AS currency_ratio + FROM web_sales ws + LEFT OUTER JOIN + web_returns wr + ON ( + ws.ws_order_number = wr.wr_order_number + AND ws.ws_item_sk = wr.wr_item_sk + ), + date_dim + WHERE + wr.wr_return_amt > 10000 + AND ws.ws_net_profit > 1 + AND ws.ws_net_paid > 0 + AND ws.ws_quantity > 0 + AND ws_sold_date_sk = d_date_sk + AND d_year = 2001 + 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)) AS decimal(15, 4)) + / cast(sum(coalesce(cs.cs_net_paid, 0)) AS decimal(15, 4)) + ) AS currency_ratio + FROM catalog_sales cs + LEFT OUTER JOIN + catalog_returns cr + ON ( + cs.cs_order_number = cr.cr_order_number + AND cs.cs_item_sk = cr.cr_item_sk + ), + date_dim + WHERE + cr.cr_return_amount > 10000 + AND cs.cs_net_profit > 1 + AND cs.cs_net_paid > 0 + AND cs.cs_quantity > 0 + AND cs_sold_date_sk = d_date_sk + AND d_year = 2001 + 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)) AS decimal(15, 4)) + / cast(sum(coalesce(sts.ss_net_paid, 0)) AS decimal(15, 4)) + ) AS currency_ratio + FROM store_sales sts + LEFT OUTER JOIN + store_returns sr + ON ( + sts.ss_ticket_number = sr.sr_ticket_number + AND sts.ss_item_sk = sr.sr_item_sk + ), + date_dim + WHERE + sr.sr_return_amt > 10000 + AND sts.ss_net_profit > 1 + AND sts.ss_net_paid > 0 + AND sts.ss_quantity > 0 + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 12 + GROUP BY sts.ss_item_sk + ) in_store + ) store + WHERE (store.return_rank <= 10 OR store.currency_rank <= 10) +) +ORDER BY 1, 4, 5, 2 +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/5.sql b/datafusion/core/tests/tpc-ds/5.sql index 60943526bb5f6..3236e39d93fff 100644 --- a/datafusion/core/tests/tpc-ds/5.sql +++ b/datafusion/core/tests/tpc-ds/5.sql @@ -1,129 +1,146 @@ --- Copyright 2015 Transaction Processing Performance Council - -with ssr as - (select s_store_id, - sum(sales_price) as sales, - sum(profit) as profit, - sum(return_amt) as returns, - sum(net_loss) as profit_loss - from - ( select ss_store_sk as store_sk, - ss_sold_date_sk as date_sk, - ss_ext_sales_price as sales_price, - ss_net_profit as profit, - cast(0 as decimal(7,2)) as return_amt, - cast(0 as decimal(7,2)) as net_loss - from store_sales - union all - select sr_store_sk as store_sk, - sr_returned_date_sk as date_sk, - cast(0 as decimal(7,2)) as sales_price, - cast(0 as decimal(7,2)) as profit, - sr_return_amt as return_amt, - sr_net_loss as net_loss - from store_returns - ) salesreturns, - date_dim, - store - where date_sk = d_date_sk - and d_date between cast('1998-08-04' as date) - and (cast('1998-08-04' as date) + INTERVAL '14 days') - and store_sk = s_store_sk - group by s_store_id) - , - csr as - (select cp_catalog_page_id, - sum(sales_price) as sales, - sum(profit) as profit, - sum(return_amt) as returns, - sum(net_loss) as profit_loss - from - ( select cs_catalog_page_sk as page_sk, - cs_sold_date_sk as date_sk, - cs_ext_sales_price as sales_price, - cs_net_profit as profit, - cast(0 as decimal(7,2)) as return_amt, - cast(0 as decimal(7,2)) as net_loss - from catalog_sales - union all - select cr_catalog_page_sk as page_sk, - cr_returned_date_sk as date_sk, - cast(0 as decimal(7,2)) as sales_price, - cast(0 as decimal(7,2)) as profit, - cr_return_amount as return_amt, - cr_net_loss as net_loss - from catalog_returns - ) salesreturns, - date_dim, - catalog_page - where date_sk = d_date_sk - and d_date between cast('1998-08-04' as date) - and (cast('1998-08-04' as date) + INTERVAL '14 days') - and page_sk = cp_catalog_page_sk - group by cp_catalog_page_id) - , - wsr as - (select web_site_id, - sum(sales_price) as sales, - sum(profit) as profit, - sum(return_amt) as returns, - sum(net_loss) as profit_loss - from - ( select ws_web_site_sk as wsr_web_site_sk, - ws_sold_date_sk as date_sk, - ws_ext_sales_price as sales_price, - ws_net_profit as profit, - cast(0 as decimal(7,2)) as return_amt, - cast(0 as decimal(7,2)) as net_loss - from web_sales - union all - select ws_web_site_sk as wsr_web_site_sk, - wr_returned_date_sk as date_sk, - cast(0 as decimal(7,2)) as sales_price, - cast(0 as decimal(7,2)) as profit, - wr_return_amt as return_amt, - wr_net_loss as net_loss - from web_returns left outer join web_sales on - ( wr_item_sk = ws_item_sk - and wr_order_number = ws_order_number) - ) salesreturns, - date_dim, - web_site - where date_sk = d_date_sk - and d_date between cast('1998-08-04' as date) - and (cast('1998-08-04' as date) + INTERVAL '14 days') - and wsr_web_site_sk = web_site_sk - group by web_site_id) - select channel - , id - , sum(sales) as sales - , sum(returns) as returns - , sum(profit) as profit - from - (select 'store channel' as channel - , 'store' || s_store_id as id - , sales - , returns - , (profit - profit_loss) as profit - from ssr - union all - select 'catalog channel' as channel - , 'catalog_page' || cp_catalog_page_id as id - , sales - , returns - , (profit - profit_loss) as profit - from csr - union all - select 'web channel' as channel - , 'web_site' || web_site_id as id - , sales - , returns - , (profit - profit_loss) as profit - from wsr - ) x - group by rollup (channel, id) - order by channel - ,id - limit 100; - - +WITH + ssr AS ( + SELECT + s_store_id, + sum(sales_price) AS sales, + sum(profit) AS profit, + sum(return_amt) AS returns, + sum(net_loss) AS profit_loss + FROM + ( + SELECT + ss_store_sk AS store_sk, + ss_sold_date_sk AS date_sk, + ss_ext_sales_price AS sales_price, + ss_net_profit AS profit, + cast(0 AS decimal(7, 2)) AS return_amt, + cast(0 AS decimal(7, 2)) AS net_loss + FROM store_sales + UNION ALL + SELECT + sr_store_sk AS store_sk, + sr_returned_date_sk AS date_sk, + cast(0 AS decimal(7, 2)) AS sales_price, + cast(0 AS decimal(7, 2)) AS profit, + sr_return_amt AS return_amt, + sr_net_loss AS net_loss + FROM store_returns + ) salesreturns, + date_dim, + store + WHERE + date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND ( + cast('2000-08-23' AS date) + INTERVAL '14 days' + ) + AND store_sk = s_store_sk + GROUP BY s_store_id + ), + csr AS ( + SELECT + cp_catalog_page_id, + sum(sales_price) AS sales, + sum(profit) AS profit, + sum(return_amt) AS returns, + sum(net_loss) AS profit_loss + FROM + ( + SELECT + cs_catalog_page_sk AS page_sk, + cs_sold_date_sk AS date_sk, + cs_ext_sales_price AS sales_price, + cs_net_profit AS profit, + cast(0 AS decimal(7, 2)) AS return_amt, + cast(0 AS decimal(7, 2)) AS net_loss + FROM catalog_sales + UNION ALL + SELECT + cr_catalog_page_sk AS page_sk, + cr_returned_date_sk AS date_sk, + cast(0 AS decimal(7, 2)) AS sales_price, + cast(0 AS decimal(7, 2)) AS profit, + cr_return_amount AS return_amt, + cr_net_loss AS net_loss + FROM catalog_returns + ) salesreturns, + date_dim, + catalog_page + WHERE + date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND ( + cast('2000-08-23' AS date) + INTERVAL '14 days' + ) + AND page_sk = cp_catalog_page_sk + GROUP BY cp_catalog_page_id + ), + wsr AS ( + SELECT + web_site_id, + sum(sales_price) AS sales, + sum(profit) AS profit, + sum(return_amt) AS returns, + sum(net_loss) AS profit_loss + FROM + ( + SELECT + ws_web_site_sk AS wsr_web_site_sk, + ws_sold_date_sk AS date_sk, + ws_ext_sales_price AS sales_price, + ws_net_profit AS profit, + cast(0 AS decimal(7, 2)) AS return_amt, + cast(0 AS decimal(7, 2)) AS net_loss + FROM web_sales + UNION ALL + SELECT + ws_web_site_sk AS wsr_web_site_sk, + wr_returned_date_sk AS date_sk, + cast(0 AS decimal(7, 2)) AS sales_price, + cast(0 AS decimal(7, 2)) AS profit, + wr_return_amt AS return_amt, + wr_net_loss AS net_loss + FROM web_returns + LEFT OUTER JOIN + web_sales + ON (wr_item_sk = ws_item_sk AND wr_order_number = ws_order_number) + ) salesreturns, + date_dim, + web_site + WHERE + date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND ( + cast('2000-08-23' AS date) + INTERVAL '14 days' + ) + AND wsr_web_site_sk = web_site_sk + GROUP BY web_site_id + ) +SELECT channel, id, sum(sales) AS sales, sum(returns) AS returns, sum(profit) AS profit +FROM + ( + SELECT + 'store channel' AS channel, + concat('store', s_store_id) AS id, + sales, + returns, + (profit - profit_loss) AS profit + FROM ssr + UNION ALL + SELECT + 'catalog channel' AS channel, + concat('catalog_page', cp_catalog_page_id) AS id, + sales, + returns, + (profit - profit_loss) AS profit + FROM csr + UNION ALL + SELECT + 'web channel' AS channel, + concat('web_site', web_site_id) AS id, + sales, + returns, + (profit - profit_loss) AS profit + FROM wsr + ) x +GROUP BY rollup (channel, id) +ORDER BY channel, id +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/50.sql b/datafusion/core/tests/tpc-ds/50.sql index f11a6562fc252..080a3289b1c78 100644 --- a/datafusion/core/tests/tpc-ds/50.sql +++ b/datafusion/core/tests/tpc-ds/50.sql @@ -1,60 +1,78 @@ --- Copyright 2015 Transaction Processing Performance Council - -select - s_store_name - ,s_company_id - ,s_street_number - ,s_street_name - ,s_street_type - ,s_suite_number - ,s_city - ,s_county - ,s_state - ,s_zip - ,sum(case when (sr_returned_date_sk - ss_sold_date_sk <= 30 ) then 1 else 0 end) as '30 days' - ,sum(case when (sr_returned_date_sk - ss_sold_date_sk > 30) and - (sr_returned_date_sk - ss_sold_date_sk <= 60) then 1 else 0 end ) as '31-60 days' - ,sum(case when (sr_returned_date_sk - ss_sold_date_sk > 60) and - (sr_returned_date_sk - ss_sold_date_sk <= 90) then 1 else 0 end) as '61-90 days' - ,sum(case when (sr_returned_date_sk - ss_sold_date_sk > 90) and - (sr_returned_date_sk - ss_sold_date_sk <= 120) then 1 else 0 end) as '91-120 days' - ,sum(case when (sr_returned_date_sk - ss_sold_date_sk > 120) then 1 else 0 end) as '>120 days' -from - store_sales - ,store_returns - ,store - ,date_dim d1 - ,date_dim d2 -where - d2.d_year = 2000 -and d2.d_moy = 9 -and ss_ticket_number = sr_ticket_number -and ss_item_sk = sr_item_sk -and ss_sold_date_sk = d1.d_date_sk -and sr_returned_date_sk = d2.d_date_sk -and ss_customer_sk = sr_customer_sk -and ss_store_sk = s_store_sk -group by - s_store_name - ,s_company_id - ,s_street_number - ,s_street_name - ,s_street_type - ,s_suite_number - ,s_city - ,s_county - ,s_state - ,s_zip -order by s_store_name - ,s_company_id - ,s_street_number - ,s_street_name - ,s_street_type - ,s_suite_number - ,s_city - ,s_county - ,s_state - ,s_zip -limit 100; - - +SELECT + s_store_name, + s_company_id, + s_street_number, + s_street_name, + s_street_type, + s_suite_number, + s_city, + s_county, + s_state, + s_zip, + sum( + CASE WHEN (sr_returned_date_sk - ss_sold_date_sk <= 30) THEN 1 ELSE 0 END + ) AS '30 days', + sum( + CASE + WHEN + (sr_returned_date_sk - ss_sold_date_sk > 30) + AND (sr_returned_date_sk - ss_sold_date_sk <= 60) + THEN 1 + ELSE 0 + END + ) AS '31-60 days', + sum( + CASE + WHEN + (sr_returned_date_sk - ss_sold_date_sk > 60) + AND (sr_returned_date_sk - ss_sold_date_sk <= 90) + THEN 1 + ELSE 0 + END + ) AS '61-90 days', + sum( + CASE + WHEN + (sr_returned_date_sk - ss_sold_date_sk > 90) + AND (sr_returned_date_sk - ss_sold_date_sk <= 120) + THEN 1 + ELSE 0 + END + ) AS '91-120 days', + sum( + CASE WHEN (sr_returned_date_sk - ss_sold_date_sk > 120) THEN 1 ELSE 0 END + ) AS '>120 days' +FROM store_sales, store_returns, store, date_dim d1, date_dim d2 +WHERE + d2.d_year = 2001 + AND d2.d_moy = 8 + AND ss_ticket_number = sr_ticket_number + AND ss_item_sk = sr_item_sk + AND ss_sold_date_sk = d1.d_date_sk + AND sr_returned_date_sk = d2.d_date_sk + AND ss_customer_sk = sr_customer_sk + AND ss_store_sk = s_store_sk +GROUP BY + s_store_name, + s_company_id, + s_street_number, + s_street_name, + s_street_type, + s_suite_number, + s_city, + s_county, + s_state, + s_zip +ORDER BY + s_store_name, + s_company_id, + s_street_number, + s_street_name, + s_street_type, + s_suite_number, + s_city, + s_county, + s_state, + s_zip +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/51.sql b/datafusion/core/tests/tpc-ds/51.sql index a12d53b5e2140..cfa4b1a5d5049 100644 --- a/datafusion/core/tests/tpc-ds/51.sql +++ b/datafusion/core/tests/tpc-ds/51.sql @@ -1,46 +1,72 @@ --- Copyright 2015 Transaction Processing Performance Council - -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 1212 and 1212+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 1212 and 1212+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 - ,d_date -limit 100; - - +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, d_date +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/52.sql b/datafusion/core/tests/tpc-ds/52.sql index 2b042cfd3d06a..5a414ea1816d5 100644 --- a/datafusion/core/tests/tpc-ds/52.sql +++ b/datafusion/core/tests/tpc-ds/52.sql @@ -1,23 +1,16 @@ --- Copyright 2015 Transaction Processing Performance Council - -select dt.d_year - ,item.i_brand_id brand_id - ,item.i_brand brand - ,sum(ss_ext_sales_price) ext_price - from date_dim dt - ,store_sales - ,item - where dt.d_date_sk = store_sales.ss_sold_date_sk - and store_sales.ss_item_sk = item.i_item_sk - and item.i_manager_id = 1 - and dt.d_moy=12 - and dt.d_year=1998 - group by dt.d_year - ,item.i_brand - ,item.i_brand_id - order by dt.d_year - ,ext_price desc - ,brand_id -limit 100 ; - - +SELECT + dt.d_year, + item.i_brand_id brand_id, + item.i_brand brand, + sum(ss_ext_sales_price) ext_price +FROM date_dim dt, store_sales, item +WHERE + dt.d_date_sk = store_sales.ss_sold_date_sk + AND store_sales.ss_item_sk = item.i_item_sk + AND item.i_manager_id = 1 + AND dt.d_moy = 11 + AND dt.d_year = 2000 +GROUP BY dt.d_year, item.i_brand, item.i_brand_id +ORDER BY dt.d_year, ext_price desc, brand_id +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/53.sql b/datafusion/core/tests/tpc-ds/53.sql index 2fa19a1bb9a14..cdbbdba5fcb3b 100644 --- a/datafusion/core/tests/tpc-ds/53.sql +++ b/datafusion/core/tests/tpc-ds/53.sql @@ -1,29 +1,62 @@ --- Copyright 2015 Transaction Processing Performance Council - -select * from -(select i_manufact_id, -sum(ss_sales_price) sum_sales, -avg(sum(ss_sales_price)) over (partition by i_manufact_id) avg_quarterly_sales -from item, store_sales, date_dim, store -where ss_item_sk = i_item_sk and -ss_sold_date_sk = d_date_sk and -ss_store_sk = s_store_sk and -d_month_seq in (1212,1212+1,1212+2,1212+3,1212+4,1212+5,1212+6,1212+7,1212+8,1212+9,1212+10,1212+11) and -((i_category in ('Books','Children','Electronics') and -i_class in ('personal','portable','reference','self-help') and -i_brand in ('scholaramalgamalg #14','scholaramalgamalg #7', - 'exportiunivamalg #9','scholaramalgamalg #9')) -or(i_category in ('Women','Music','Men') and -i_class in ('accessories','classical','fragrances','pants') and -i_brand in ('amalgimporto #1','edu packscholar #1','exportiimporto #1', - 'importoamalg #1'))) -group by i_manufact_id, d_qoy ) tmp1 -where case when avg_quarterly_sales > 0 - then abs (sum_sales - avg_quarterly_sales)/ avg_quarterly_sales - else null end > 0.1 -order by avg_quarterly_sales, - sum_sales, - i_manufact_id -limit 100; - - +SELECT * +FROM + ( + SELECT + i_manufact_id, + sum(ss_sales_price) sum_sales, + avg(sum(ss_sales_price)) OVER ( + PARTITION BY i_manufact_id + ) avg_quarterly_sales + FROM item, store_sales, date_dim, store + WHERE + ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND d_month_seq IN ( + 1200, + 1200 + 1, + 1200 + 2, + 1200 + 3, + 1200 + 4, + 1200 + 5, + 1200 + 6, + 1200 + 7, + 1200 + 8, + 1200 + 9, + 1200 + 10, + 1200 + 11 + ) + AND ( + ( + i_category IN ('Books', 'Children', 'Electronics') + AND i_class IN ('personal', 'portable', 'reference', 'self-help') + AND i_brand IN ( + 'scholaramalgamalg #14', + 'scholaramalgamalg #7', + 'exportiunivamalg #9', + 'scholaramalgamalg #9' + ) + ) + OR ( + i_category IN ('Women', 'Music', 'Men') + AND i_class IN ('accessories', 'classical', 'fragrances', 'pants') + AND i_brand IN ( + 'amalgimporto #1', + 'edu packscholar #1', + 'exportiimporto #1', + 'importoamalg #1' + ) + ) + ) + GROUP BY i_manufact_id, d_qoy + ) tmp1 +WHERE + CASE + WHEN avg_quarterly_sales > 0 + THEN abs(sum_sales - avg_quarterly_sales) / avg_quarterly_sales + ELSE null + END + > 0.1 +ORDER BY avg_quarterly_sales, sum_sales, i_manufact_id +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/54.sql b/datafusion/core/tests/tpc-ds/54.sql index 54173c7f30c09..901b202eb9fe1 100644 --- a/datafusion/core/tests/tpc-ds/54.sql +++ b/datafusion/core/tests/tpc-ds/54.sql @@ -1,57 +1,57 @@ --- Copyright 2015 Transaction Processing Performance Council - -with my_customers as ( - select distinct c_customer_sk - , c_current_addr_sk - from - ( select cs_sold_date_sk sold_date_sk, - cs_bill_customer_sk customer_sk, - cs_item_sk item_sk - from catalog_sales - union all - select ws_sold_date_sk sold_date_sk, - ws_bill_customer_sk customer_sk, - ws_item_sk item_sk - from web_sales - ) cs_or_ws_sales, - item, - date_dim, - customer - where sold_date_sk = d_date_sk - and item_sk = i_item_sk - and i_category = 'Jewelry' - and i_class = 'consignment' - and c_customer_sk = cs_or_ws_sales.customer_sk - and d_moy = 3 - and d_year = 1999 - ) - , my_revenue as ( - select c_customer_sk, - sum(ss_ext_sales_price) as revenue - from my_customers, - store_sales, - customer_address, - store, - date_dim - where c_current_addr_sk = ca_address_sk - and ca_county = s_county - and ca_state = s_state - and ss_sold_date_sk = d_date_sk - and c_customer_sk = ss_customer_sk - and d_month_seq between (select distinct d_month_seq+1 - from date_dim where d_year = 1999 and d_moy = 3) - and (select distinct d_month_seq+3 - from date_dim where d_year = 1999 and d_moy = 3) - group by c_customer_sk - ) - , segments as - (select cast((revenue/50) as int) as segment - from my_revenue - ) - select segment, count(*) as num_customers, segment*50 as segment_base - from segments - group by segment - order by segment, num_customers - limit 100; - - +WITH + my_customers AS ( + SELECT DISTINCT c_customer_sk, c_current_addr_sk + FROM + ( + SELECT + cs_sold_date_sk sold_date_sk, + cs_bill_customer_sk customer_sk, + cs_item_sk item_sk + FROM catalog_sales + UNION ALL + SELECT + ws_sold_date_sk sold_date_sk, + ws_bill_customer_sk customer_sk, + ws_item_sk item_sk + FROM web_sales + ) cs_or_ws_sales, + item, + date_dim, + customer + WHERE + sold_date_sk = d_date_sk + AND item_sk = i_item_sk + AND i_category = 'Women' + AND i_class = 'maternity' + AND c_customer_sk = cs_or_ws_sales.customer_sk + AND d_moy = 12 + AND d_year = 1998 + ), + my_revenue AS ( + SELECT c_customer_sk, sum(ss_ext_sales_price) AS revenue + FROM my_customers, store_sales, customer_address, store, date_dim + WHERE + c_current_addr_sk = ca_address_sk + AND ca_county = s_county + AND ca_state = s_state + AND ss_sold_date_sk = d_date_sk + AND c_customer_sk = ss_customer_sk + AND d_month_seq + BETWEEN ( + SELECT DISTINCT d_month_seq + 1 + FROM date_dim + WHERE d_year = 1998 AND d_moy = 12 + ) AND ( + SELECT DISTINCT d_month_seq + 3 + FROM date_dim + WHERE d_year = 1998 AND d_moy = 12 + ) + GROUP BY c_customer_sk + ), + segments AS (SELECT cast((revenue / 50) AS int) AS segment FROM my_revenue) +SELECT segment, count(*) AS num_customers, segment * 50 AS segment_base +FROM segments +GROUP BY segment +ORDER BY segment, num_customers +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/55.sql b/datafusion/core/tests/tpc-ds/55.sql index 006e2493a6815..4c2cb93c287d3 100644 --- a/datafusion/core/tests/tpc-ds/55.sql +++ b/datafusion/core/tests/tpc-ds/55.sql @@ -1,15 +1,12 @@ --- Copyright 2015 Transaction Processing Performance Council - -select i_brand_id brand_id, i_brand brand, - sum(ss_ext_sales_price) ext_price - from date_dim, store_sales, item - where d_date_sk = ss_sold_date_sk - and ss_item_sk = i_item_sk - and i_manager_id=36 - and d_moy=12 - and d_year=2001 - group by i_brand, i_brand_id - order by ext_price desc, i_brand_id -limit 100 ; - - +SELECT i_brand_id brand_id, i_brand brand, sum(ss_ext_sales_price) ext_price +FROM date_dim, store_sales, item +WHERE + d_date_sk = ss_sold_date_sk + AND ss_item_sk = i_item_sk + AND i_manager_id = 28 + AND d_moy = 11 + AND d_year = 1999 +GROUP BY i_brand, i_brand_id +ORDER BY ext_price desc, i_brand_id +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/56.sql b/datafusion/core/tests/tpc-ds/56.sql index d811f5fbb8072..674a52f31ae78 100644 --- a/datafusion/core/tests/tpc-ds/56.sql +++ b/datafusion/core/tests/tpc-ds/56.sql @@ -1,70 +1,68 @@ --- Copyright 2015 Transaction Processing Performance Council - -with ss as ( - select i_item_id,sum(ss_ext_sales_price) total_sales - from - store_sales, - date_dim, - customer_address, - item - where i_item_id in (select - i_item_id -from item -where i_color in ('orchid','chiffon','lace')) - and ss_item_sk = i_item_sk - and ss_sold_date_sk = d_date_sk - and d_year = 2000 - and d_moy = 1 - and ss_addr_sk = ca_address_sk - and ca_gmt_offset = -8 - group by i_item_id), - cs as ( - select i_item_id,sum(cs_ext_sales_price) total_sales - from - catalog_sales, - date_dim, - customer_address, - item - where - i_item_id in (select - i_item_id -from item -where i_color in ('orchid','chiffon','lace')) - and cs_item_sk = i_item_sk - and cs_sold_date_sk = d_date_sk - and d_year = 2000 - and d_moy = 1 - and cs_bill_addr_sk = ca_address_sk - and ca_gmt_offset = -8 - group by i_item_id), - ws as ( - select i_item_id,sum(ws_ext_sales_price) total_sales - from - web_sales, - date_dim, - customer_address, - item - where - i_item_id in (select - i_item_id -from item -where i_color in ('orchid','chiffon','lace')) - and ws_item_sk = i_item_sk - and ws_sold_date_sk = d_date_sk - and d_year = 2000 - and d_moy = 1 - and ws_bill_addr_sk = ca_address_sk - and ca_gmt_offset = -8 - group by i_item_id) - select i_item_id ,sum(total_sales) total_sales - from (select * from ss - union all - select * from cs - union all - select * from ws) tmp1 - group by i_item_id - order by total_sales, - i_item_id - limit 100; - - +WITH + ss AS ( + SELECT i_item_id, sum(ss_ext_sales_price) total_sales + FROM store_sales, date_dim, customer_address, item + WHERE + i_item_id IN ( + SELECT i_item_id + FROM item + WHERE i_color IN ('slate', 'blanched', 'burnished') + ) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 2 + AND ss_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id + ), + cs AS ( + SELECT i_item_id, sum(cs_ext_sales_price) total_sales + FROM catalog_sales, date_dim, customer_address, item + WHERE + i_item_id IN ( + SELECT i_item_id + FROM item + WHERE i_color IN ('slate', 'blanched', 'burnished') + ) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 2 + AND cs_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id + ), + ws AS ( + SELECT i_item_id, sum(ws_ext_sales_price) total_sales + FROM web_sales, date_dim, customer_address, item + WHERE + i_item_id IN ( + SELECT i_item_id + FROM item + WHERE i_color IN ('slate', 'blanched', 'burnished') + ) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 2 + AND ws_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id + ) +SELECT i_item_id, sum(total_sales) total_sales +FROM + ( + SELECT * + FROM ss + UNION ALL + SELECT * + FROM cs + UNION ALL + SELECT * + FROM ws + ) tmp1 +GROUP BY i_item_id +ORDER BY total_sales +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/57.sql b/datafusion/core/tests/tpc-ds/57.sql index 68f8c9f61a725..be645e557be79 100644 --- a/datafusion/core/tests/tpc-ds/57.sql +++ b/datafusion/core/tests/tpc-ds/57.sql @@ -1,49 +1,64 @@ --- Copyright 2015 Transaction Processing Performance Council - -with v1 as( - select i_category, i_brand, - cc_name, - d_year, d_moy, - sum(cs_sales_price) sum_sales, - avg(sum(cs_sales_price)) over - (partition by i_category, i_brand, - cc_name, d_year) - avg_monthly_sales, - rank() over - (partition by i_category, i_brand, - cc_name - order by d_year, d_moy) rn - from item, catalog_sales, date_dim, call_center - where cs_item_sk = i_item_sk and - cs_sold_date_sk = d_date_sk and - cc_call_center_sk= cs_call_center_sk and - ( - d_year = 2000 or - ( d_year = 2000-1 and d_moy =12) or - ( d_year = 2000+1 and d_moy =1) - ) - group by i_category, i_brand, - cc_name , d_year, d_moy), - v2 as( - select v1.cc_name - ,v1.d_year, v1.d_moy - ,v1.avg_monthly_sales - ,v1.sum_sales, v1_lag.sum_sales psum, v1_lead.sum_sales nsum - from v1, v1 v1_lag, v1 v1_lead - where v1.i_category = v1_lag.i_category and - v1.i_category = v1_lead.i_category and - v1.i_brand = v1_lag.i_brand and - v1.i_brand = v1_lead.i_brand and - v1. cc_name = v1_lag. cc_name and - v1. cc_name = v1_lead. cc_name and - v1.rn = v1_lag.rn + 1 and - v1.rn = v1_lead.rn - 1) - select * - from v2 - where d_year = 2000 and - avg_monthly_sales > 0 and - case when avg_monthly_sales > 0 then abs(sum_sales - avg_monthly_sales) / avg_monthly_sales else null end > 0.1 - order by sum_sales - avg_monthly_sales, nsum - limit 100; - - +WITH + v1 AS ( + SELECT + i_category, + i_brand, + cc_name, + d_year, + d_moy, + sum(cs_sales_price) sum_sales, + avg(sum(cs_sales_price)) OVER ( + PARTITION BY i_category, i_brand, cc_name, d_year + ) + avg_monthly_sales, + rank() OVER ( + PARTITION BY i_category, i_brand, cc_name ORDER BY d_year, d_moy + ) rn + FROM item, catalog_sales, date_dim, call_center + WHERE + cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND cc_call_center_sk = cs_call_center_sk + AND ( + d_year = 1999 + OR (d_year = 1999 - 1 AND d_moy = 12) + OR (d_year = 1999 + 1 AND d_moy = 1) + ) + GROUP BY i_category, i_brand, cc_name, d_year, d_moy + ), + v2 AS ( + SELECT + v1.i_category, + v1.i_brand, + v1.cc_name, + v1.d_year, + v1.d_moy, + v1.avg_monthly_sales, + v1.sum_sales, + v1_lag.sum_sales psum, + v1_lead.sum_sales nsum + FROM v1, v1 v1_lag, v1 v1_lead + WHERE + v1.i_category = v1_lag.i_category + AND v1.i_category = v1_lead.i_category + AND v1.i_brand = v1_lag.i_brand + AND v1.i_brand = v1_lead.i_brand + AND v1.cc_name = v1_lag.cc_name + AND v1.cc_name = v1_lead.cc_name + AND v1.rn = v1_lag.rn + 1 + AND v1.rn = v1_lead.rn - 1 + ) +SELECT * +FROM v2 +WHERE + d_year = 1999 + AND avg_monthly_sales > 0 + AND CASE + WHEN avg_monthly_sales > 0 + THEN abs(sum_sales - avg_monthly_sales) / avg_monthly_sales + ELSE null + END + > 0.1 +ORDER BY sum_sales - avg_monthly_sales, nsum +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/58.sql b/datafusion/core/tests/tpc-ds/58.sql index bafaabee07591..132eac46c58d9 100644 --- a/datafusion/core/tests/tpc-ds/58.sql +++ b/datafusion/core/tests/tpc-ds/58.sql @@ -1,66 +1,68 @@ --- Copyright 2015 Transaction Processing Performance Council - -with ss_items as - (select i_item_id item_id - ,sum(ss_ext_sales_price) ss_item_rev - from store_sales - ,item - ,date_dim - where ss_item_sk = i_item_sk - and d_date in (select d_date - from date_dim - where d_week_seq = (select d_week_seq - from date_dim - where d_date = '1998-02-19')) - and ss_sold_date_sk = d_date_sk - group by i_item_id), - cs_items as - (select i_item_id item_id - ,sum(cs_ext_sales_price) cs_item_rev - from catalog_sales - ,item - ,date_dim - where cs_item_sk = i_item_sk - and d_date in (select d_date - from date_dim - where d_week_seq = (select d_week_seq - from date_dim - where d_date = '1998-02-19')) - and cs_sold_date_sk = d_date_sk - group by i_item_id), - ws_items as - (select i_item_id item_id - ,sum(ws_ext_sales_price) ws_item_rev - from web_sales - ,item - ,date_dim - where ws_item_sk = i_item_sk - and d_date in (select d_date - from date_dim - where d_week_seq =(select d_week_seq - from date_dim - where d_date = '1998-02-19')) - and ws_sold_date_sk = d_date_sk - group by i_item_id) - select ss_items.item_id - ,ss_item_rev - ,ss_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3) * 100 ss_dev - ,cs_item_rev - ,cs_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3) * 100 cs_dev - ,ws_item_rev - ,ws_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3) * 100 ws_dev - ,(ss_item_rev+cs_item_rev+ws_item_rev)/3 average - from ss_items,cs_items,ws_items - where ss_items.item_id=cs_items.item_id - and ss_items.item_id=ws_items.item_id - and ss_item_rev between 0.9 * cs_item_rev and 1.1 * cs_item_rev - and ss_item_rev between 0.9 * ws_item_rev and 1.1 * ws_item_rev - and cs_item_rev between 0.9 * ss_item_rev and 1.1 * ss_item_rev - and cs_item_rev between 0.9 * ws_item_rev and 1.1 * ws_item_rev - and ws_item_rev between 0.9 * ss_item_rev and 1.1 * ss_item_rev - and ws_item_rev between 0.9 * cs_item_rev and 1.1 * cs_item_rev - order by item_id - ,ss_item_rev - limit 100; - - +WITH + ss_items AS ( + SELECT i_item_id item_id, sum(ss_ext_sales_price) ss_item_rev + FROM store_sales, item, date_dim + WHERE + ss_item_sk = i_item_sk + AND d_date IN ( + SELECT d_date + FROM date_dim + WHERE + d_week_seq + = (SELECT d_week_seq FROM date_dim WHERE d_date = '2000-01-03') + ) + AND ss_sold_date_sk = d_date_sk + GROUP BY i_item_id + ), + cs_items AS ( + SELECT i_item_id item_id, sum(cs_ext_sales_price) cs_item_rev + FROM catalog_sales, item, date_dim + WHERE + cs_item_sk = i_item_sk + AND d_date IN ( + SELECT d_date + FROM date_dim + WHERE + d_week_seq + = (SELECT d_week_seq FROM date_dim WHERE d_date = '2000-01-03') + ) + AND cs_sold_date_sk = d_date_sk + GROUP BY i_item_id + ), + ws_items AS ( + SELECT i_item_id item_id, sum(ws_ext_sales_price) ws_item_rev + FROM web_sales, item, date_dim + WHERE + ws_item_sk = i_item_sk + AND d_date IN ( + SELECT d_date + FROM date_dim + WHERE + d_week_seq + = (SELECT d_week_seq FROM date_dim WHERE d_date = '2000-01-03') + ) + AND ws_sold_date_sk = d_date_sk + GROUP BY i_item_id + ) +SELECT + ss_items.item_id, + ss_item_rev, + ss_item_rev / ((ss_item_rev + cs_item_rev + ws_item_rev) / 3) * 100 ss_dev, + cs_item_rev, + cs_item_rev / ((ss_item_rev + cs_item_rev + ws_item_rev) / 3) * 100 cs_dev, + ws_item_rev, + ws_item_rev / ((ss_item_rev + cs_item_rev + ws_item_rev) / 3) * 100 ws_dev, + (ss_item_rev + cs_item_rev + ws_item_rev) / 3 average +FROM ss_items, cs_items, ws_items +WHERE + ss_items.item_id = cs_items.item_id + AND ss_items.item_id = ws_items.item_id + AND ss_item_rev BETWEEN 0.9 * cs_item_rev AND 1.1 * cs_item_rev + AND ss_item_rev BETWEEN 0.9 * ws_item_rev AND 1.1 * ws_item_rev + AND cs_item_rev BETWEEN 0.9 * ss_item_rev AND 1.1 * ss_item_rev + AND cs_item_rev BETWEEN 0.9 * ws_item_rev AND 1.1 * ws_item_rev + AND ws_item_rev BETWEEN 0.9 * ss_item_rev AND 1.1 * ss_item_rev + AND ws_item_rev BETWEEN 0.9 * cs_item_rev AND 1.1 * cs_item_rev +ORDER BY item_id, ss_item_rev +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/59.sql b/datafusion/core/tests/tpc-ds/59.sql index 58d66b8577328..fb8566283438b 100644 --- a/datafusion/core/tests/tpc-ds/59.sql +++ b/datafusion/core/tests/tpc-ds/59.sql @@ -1,45 +1,68 @@ --- Copyright 2015 Transaction Processing Performance Council - -with wss as - (select d_week_seq, - ss_store_sk, - sum(case when (d_day_name='Sunday') then ss_sales_price else null end) sun_sales, - sum(case when (d_day_name='Monday') then ss_sales_price else null end) mon_sales, - sum(case when (d_day_name='Tuesday') then ss_sales_price else null end) tue_sales, - sum(case when (d_day_name='Wednesday') then ss_sales_price else null end) wed_sales, - sum(case when (d_day_name='Thursday') then ss_sales_price else null end) thu_sales, - sum(case when (d_day_name='Friday') then ss_sales_price else null end) fri_sales, - sum(case when (d_day_name='Saturday') then ss_sales_price else null end) sat_sales - from store_sales,date_dim - where d_date_sk = ss_sold_date_sk - group by d_week_seq,ss_store_sk - ) - select s_store_name1,s_store_id1,d_week_seq1 - ,sun_sales1/sun_sales2,mon_sales1/mon_sales2 - ,tue_sales1/tue_sales2,wed_sales1/wed_sales2,thu_sales1/thu_sales2 - ,fri_sales1/fri_sales2,sat_sales1/sat_sales2 - from - (select s_store_name s_store_name1,wss.d_week_seq d_week_seq1 - ,s_store_id s_store_id1,sun_sales sun_sales1 - ,mon_sales mon_sales1,tue_sales tue_sales1 - ,wed_sales wed_sales1,thu_sales thu_sales1 - ,fri_sales fri_sales1,sat_sales sat_sales1 - from wss,store,date_dim d - where d.d_week_seq = wss.d_week_seq and - ss_store_sk = s_store_sk and - d_month_seq between 1185 and 1185 + 11) y, - (select s_store_name s_store_name2,wss.d_week_seq d_week_seq2 - ,s_store_id s_store_id2,sun_sales sun_sales2 - ,mon_sales mon_sales2,tue_sales tue_sales2 - ,wed_sales wed_sales2,thu_sales thu_sales2 - ,fri_sales fri_sales2,sat_sales sat_sales2 - from wss,store,date_dim d - where d.d_week_seq = wss.d_week_seq and - ss_store_sk = s_store_sk and - d_month_seq between 1185+ 12 and 1185 + 23) x - where s_store_id1=s_store_id2 - and d_week_seq1=d_week_seq2-52 - order by s_store_name1,s_store_id1,d_week_seq1 -limit 100; - - +WITH + wss AS ( + SELECT + d_week_seq, + ss_store_sk, + sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE null END) sun_sales, + sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE null END) mon_sales, + sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE null END) tue_sales, + sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE null END) wed_sales, + sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE null END) thu_sales, + sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE null END) fri_sales, + sum(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE null END) sat_sales + FROM store_sales, date_dim + WHERE d_date_sk = ss_sold_date_sk + GROUP BY d_week_seq, ss_store_sk + ) +SELECT + s_store_name1, + s_store_id1, + d_week_seq1, + sun_sales1 / sun_sales2, + mon_sales1 / mon_sales2, + tue_sales1 / tue_sales2, + wed_sales1 / wed_sales2, + thu_sales1 / thu_sales2, + fri_sales1 / fri_sales2, + sat_sales1 / sat_sales2 +FROM + ( + SELECT + s_store_name s_store_name1, + wss.d_week_seq d_week_seq1, + s_store_id s_store_id1, + sun_sales sun_sales1, + mon_sales mon_sales1, + tue_sales tue_sales1, + wed_sales wed_sales1, + thu_sales thu_sales1, + fri_sales fri_sales1, + sat_sales sat_sales1 + FROM wss, store, date_dim d + WHERE + d.d_week_seq = wss.d_week_seq + AND ss_store_sk = s_store_sk + AND d_month_seq BETWEEN 1212 AND 1212 + 11 + ) y, + ( + SELECT + s_store_name s_store_name2, + wss.d_week_seq d_week_seq2, + s_store_id s_store_id2, + sun_sales sun_sales2, + mon_sales mon_sales2, + tue_sales tue_sales2, + wed_sales wed_sales2, + thu_sales thu_sales2, + fri_sales fri_sales2, + sat_sales sat_sales2 + FROM wss, store, date_dim d + WHERE + d.d_week_seq = wss.d_week_seq + AND ss_store_sk = s_store_sk + AND d_month_seq BETWEEN 1212 + 12 AND 1212 + 23 + ) x +WHERE s_store_id1 = s_store_id2 AND d_week_seq1 = d_week_seq2 - 52 +ORDER BY s_store_name1, s_store_id1, d_week_seq1 +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/6.sql b/datafusion/core/tests/tpc-ds/6.sql index 7ecee6ae77695..5b296936fe61e 100644 --- a/datafusion/core/tests/tpc-ds/6.sql +++ b/datafusion/core/tests/tpc-ds/6.sql @@ -1,27 +1,17 @@ --- Copyright 2015 Transaction Processing Performance Council - -select a.ca_state state, count(*) cnt - from customer_address a - ,customer c - ,store_sales s - ,date_dim d - ,item i - where a.ca_address_sk = c.c_current_addr_sk - and c.c_customer_sk = s.ss_customer_sk - and s.ss_sold_date_sk = d.d_date_sk - and s.ss_item_sk = i.i_item_sk - and d.d_month_seq = - (select distinct (d_month_seq) - from date_dim - where d_year = 2000 - and d_moy = 2 ) - and i.i_current_price > 1.2 * - (select avg(j.i_current_price) - from item j - where j.i_category = i.i_category) - group by a.ca_state - having count(*) >= 10 - order by cnt, a.ca_state - limit 100; - - +SELECT a.ca_state state, count(*) cnt +FROM customer_address a, customer c, store_sales s, date_dim d, item i +WHERE + a.ca_address_sk = c.c_current_addr_sk + AND c.c_customer_sk = s.ss_customer_sk + AND s.ss_sold_date_sk = d.d_date_sk + AND s.ss_item_sk = i.i_item_sk + AND d.d_month_seq + = (SELECT DISTINCT (d_month_seq) FROM date_dim WHERE d_year = 2001 AND d_moy = 1) + AND i.i_current_price + > 1.2 + * (SELECT avg(j.i_current_price) FROM item j WHERE j.i_category = i.i_category) +GROUP BY a.ca_state +HAVING count(*) >= 10 +ORDER BY cnt +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/60.sql b/datafusion/core/tests/tpc-ds/60.sql index 205ebc87ede1e..7cb8cd175fc15 100644 --- a/datafusion/core/tests/tpc-ds/60.sql +++ b/datafusion/core/tests/tpc-ds/60.sql @@ -1,79 +1,56 @@ --- Copyright 2015 Transaction Processing Performance Council - -with ss as ( - select - i_item_id,sum(ss_ext_sales_price) total_sales - from - store_sales, - date_dim, - customer_address, - item - where - i_item_id in (select - i_item_id -from - item -where i_category in ('Children')) - and ss_item_sk = i_item_sk - and ss_sold_date_sk = d_date_sk - and d_year = 1999 - and d_moy = 9 - and ss_addr_sk = ca_address_sk - and ca_gmt_offset = -6 - group by i_item_id), - cs as ( - select - i_item_id,sum(cs_ext_sales_price) total_sales - from - catalog_sales, - date_dim, - customer_address, - item - where - i_item_id in (select - i_item_id -from - item -where i_category in ('Children')) - and cs_item_sk = i_item_sk - and cs_sold_date_sk = d_date_sk - and d_year = 1999 - and d_moy = 9 - and cs_bill_addr_sk = ca_address_sk - and ca_gmt_offset = -6 - group by i_item_id), - ws as ( - select - i_item_id,sum(ws_ext_sales_price) total_sales - from - web_sales, - date_dim, - customer_address, - item - where - i_item_id in (select - i_item_id -from - item -where i_category in ('Children')) - and ws_item_sk = i_item_sk - and ws_sold_date_sk = d_date_sk - and d_year = 1999 - and d_moy = 9 - and ws_bill_addr_sk = ca_address_sk - and ca_gmt_offset = -6 - group by i_item_id) - select - i_item_id -,sum(total_sales) total_sales - from (select * from ss - union all - select * from cs - union all - select * from ws) tmp1 - group by i_item_id - order by i_item_id - ,total_sales - limit 100; - - +WITH + ss AS ( + SELECT i_item_id, sum(ss_ext_sales_price) total_sales + FROM store_sales, date_dim, customer_address, item + WHERE + i_item_id IN (SELECT i_item_id FROM item WHERE i_category IN ('Music')) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 9 + AND ss_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id + ), + cs AS ( + SELECT i_item_id, sum(cs_ext_sales_price) total_sales + FROM catalog_sales, date_dim, customer_address, item + WHERE + i_item_id IN (SELECT i_item_id FROM item WHERE i_category IN ('Music')) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 9 + AND cs_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id + ), + ws AS ( + SELECT i_item_id, sum(ws_ext_sales_price) total_sales + FROM web_sales, date_dim, customer_address, item + WHERE + i_item_id IN (SELECT i_item_id FROM item WHERE i_category IN ('Music')) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 9 + AND ws_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id + ) +SELECT i_item_id, sum(total_sales) total_sales +FROM + ( + SELECT * + FROM ss + UNION ALL + SELECT * + FROM cs + UNION ALL + SELECT * + FROM ws + ) tmp1 +GROUP BY i_item_id +ORDER BY i_item_id, total_sales +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/61.sql b/datafusion/core/tests/tpc-ds/61.sql index 1194485fa4745..3ed8c734002b4 100644 --- a/datafusion/core/tests/tpc-ds/61.sql +++ b/datafusion/core/tests/tpc-ds/61.sql @@ -1,45 +1,40 @@ --- Copyright 2015 Transaction Processing Performance Council - -select promotions,total,cast(promotions as decimal(15,4))/cast(total as decimal(15,4))*100 -from - (select sum(ss_ext_sales_price) promotions - from store_sales - ,store - ,promotion - ,date_dim - ,customer - ,customer_address - ,item - where ss_sold_date_sk = d_date_sk - and ss_store_sk = s_store_sk - and ss_promo_sk = p_promo_sk - and ss_customer_sk= c_customer_sk - and ca_address_sk = c_current_addr_sk - and ss_item_sk = i_item_sk - and ca_gmt_offset = -7 - and i_category = 'Books' - and (p_channel_dmail = 'Y' or p_channel_email = 'Y' or p_channel_tv = 'Y') - and s_gmt_offset = -7 - and d_year = 1999 - and d_moy = 11) promotional_sales, - (select sum(ss_ext_sales_price) total - from store_sales - ,store - ,date_dim - ,customer - ,customer_address - ,item - where ss_sold_date_sk = d_date_sk - and ss_store_sk = s_store_sk - and ss_customer_sk= c_customer_sk - and ca_address_sk = c_current_addr_sk - and ss_item_sk = i_item_sk - and ca_gmt_offset = -7 - and i_category = 'Books' - and s_gmt_offset = -7 - and d_year = 1999 - and d_moy = 11) all_sales -order by promotions, total -limit 100; - - +SELECT + promotions, + total, + cast(promotions AS decimal(15, 4)) / cast(total AS decimal(15, 4)) * 100 +FROM + ( + SELECT sum(ss_ext_sales_price) promotions + FROM store_sales, store, promotion, date_dim, customer, customer_address, item + WHERE + ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND ss_promo_sk = p_promo_sk + AND ss_customer_sk = c_customer_sk + AND ca_address_sk = c_current_addr_sk + AND ss_item_sk = i_item_sk + AND ca_gmt_offset = -5 + AND i_category = 'Jewelry' + AND (p_channel_dmail = 'Y' OR p_channel_email = 'Y' OR p_channel_tv = 'Y') + AND s_gmt_offset = -5 + AND d_year = 1998 + AND d_moy = 11 + ) promotional_sales, + ( + SELECT sum(ss_ext_sales_price) total + FROM store_sales, store, date_dim, customer, customer_address, item + WHERE + ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND ss_customer_sk = c_customer_sk + AND ca_address_sk = c_current_addr_sk + AND ss_item_sk = i_item_sk + AND ca_gmt_offset = -5 + AND i_category = 'Jewelry' + AND s_gmt_offset = -5 + AND d_year = 1998 + AND d_moy = 11 + ) all_sales +ORDER BY promotions, total +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/62.sql b/datafusion/core/tests/tpc-ds/62.sql index fe8371fc28e9a..a91802a8bd50e 100644 --- a/datafusion/core/tests/tpc-ds/62.sql +++ b/datafusion/core/tests/tpc-ds/62.sql @@ -1,36 +1,48 @@ --- Copyright 2015 Transaction Processing Performance Council - -select - substr(w_warehouse_name,1,20) - ,sm_type - ,web_name - ,sum(case when (ws_ship_date_sk - ws_sold_date_sk <= 30 ) then 1 else 0 end) as '30 days' - ,sum(case when (ws_ship_date_sk - ws_sold_date_sk > 30) and - (ws_ship_date_sk - ws_sold_date_sk <= 60) then 1 else 0 end ) as '31-60 days' - ,sum(case when (ws_ship_date_sk - ws_sold_date_sk > 60) and - (ws_ship_date_sk - ws_sold_date_sk <= 90) then 1 else 0 end) as '61-90 days' - ,sum(case when (ws_ship_date_sk - ws_sold_date_sk > 90) and - (ws_ship_date_sk - ws_sold_date_sk <= 120) then 1 else 0 end) as '91-120 days' - ,sum(case when (ws_ship_date_sk - ws_sold_date_sk > 120) then 1 else 0 end) as '>120 days' -from - web_sales - ,warehouse - ,ship_mode - ,web_site - ,date_dim -where - d_month_seq between 1212 and 1212 + 11 -and ws_ship_date_sk = d_date_sk -and ws_warehouse_sk = w_warehouse_sk -and ws_ship_mode_sk = sm_ship_mode_sk -and ws_web_site_sk = web_site_sk -group by - substr(w_warehouse_name,1,20) - ,sm_type - ,web_name -order by substr(w_warehouse_name,1,20) - ,sm_type - ,web_name -limit 100; - - +SELECT + substr(w_warehouse_name, 1, 20), + sm_type, + web_name, + sum( + CASE WHEN (ws_ship_date_sk - ws_sold_date_sk <= 30) THEN 1 ELSE 0 END + ) AS '30 days', + sum( + CASE + WHEN + (ws_ship_date_sk - ws_sold_date_sk > 30) + AND (ws_ship_date_sk - ws_sold_date_sk <= 60) + THEN 1 + ELSE 0 + END + ) AS '31-60 days', + sum( + CASE + WHEN + (ws_ship_date_sk - ws_sold_date_sk > 60) + AND (ws_ship_date_sk - ws_sold_date_sk <= 90) + THEN 1 + ELSE 0 + END + ) AS '61-90 days', + sum( + CASE + WHEN + (ws_ship_date_sk - ws_sold_date_sk > 90) + AND (ws_ship_date_sk - ws_sold_date_sk <= 120) + THEN 1 + ELSE 0 + END + ) AS '91-120 days', + sum( + CASE WHEN (ws_ship_date_sk - ws_sold_date_sk > 120) THEN 1 ELSE 0 END + ) AS '>120 days' +FROM web_sales, warehouse, ship_mode, web_site, date_dim +WHERE + d_month_seq BETWEEN 1200 AND 1200 + 11 + AND ws_ship_date_sk = d_date_sk + AND ws_warehouse_sk = w_warehouse_sk + AND ws_ship_mode_sk = sm_ship_mode_sk + AND ws_web_site_sk = web_site_sk +GROUP BY substr(w_warehouse_name, 1, 20), sm_type, web_name +ORDER BY substr(w_warehouse_name, 1, 20), sm_type, web_name +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/63.sql b/datafusion/core/tests/tpc-ds/63.sql index d2986092371fe..95dffceb1cf29 100644 --- a/datafusion/core/tests/tpc-ds/63.sql +++ b/datafusion/core/tests/tpc-ds/63.sql @@ -1,30 +1,60 @@ --- Copyright 2015 Transaction Processing Performance Council - -select * -from (select i_manager_id - ,sum(ss_sales_price) sum_sales - ,avg(sum(ss_sales_price)) over (partition by i_manager_id) avg_monthly_sales - from item - ,store_sales - ,date_dim - ,store - where ss_item_sk = i_item_sk - and ss_sold_date_sk = d_date_sk - and ss_store_sk = s_store_sk - and d_month_seq in (1212,1212+1,1212+2,1212+3,1212+4,1212+5,1212+6,1212+7,1212+8,1212+9,1212+10,1212+11) - and (( i_category in ('Books','Children','Electronics') - and i_class in ('personal','portable','reference','self-help') - and i_brand in ('scholaramalgamalg #14','scholaramalgamalg #7', - 'exportiunivamalg #9','scholaramalgamalg #9')) - or( i_category in ('Women','Music','Men') - and i_class in ('accessories','classical','fragrances','pants') - and i_brand in ('amalgimporto #1','edu packscholar #1','exportiimporto #1', - 'importoamalg #1'))) -group by i_manager_id, d_moy) tmp1 -where case when avg_monthly_sales > 0 then abs (sum_sales - avg_monthly_sales) / avg_monthly_sales else null end > 0.1 -order by i_manager_id - ,avg_monthly_sales - ,sum_sales -limit 100; - - +SELECT * +FROM + ( + SELECT + i_manager_id, + sum(ss_sales_price) sum_sales, + avg(sum(ss_sales_price)) OVER (PARTITION BY i_manager_id) avg_monthly_sales + FROM item, store_sales, date_dim, store + WHERE + ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND d_month_seq IN ( + 1200, + 1200 + 1, + 1200 + 2, + 1200 + 3, + 1200 + 4, + 1200 + 5, + 1200 + 6, + 1200 + 7, + 1200 + 8, + 1200 + 9, + 1200 + 10, + 1200 + 11 + ) + AND ( + ( + i_category IN ('Books', 'Children', 'Electronics') + AND i_class IN ('personal', 'portable', 'reference', 'self-help') + AND i_brand IN ( + 'scholaramalgamalg #14', + 'scholaramalgamalg #7', + 'exportiunivamalg #9', + 'scholaramalgamalg #9' + ) + ) + OR ( + i_category IN ('Women', 'Music', 'Men') + AND i_class IN ('accessories', 'classical', 'fragrances', 'pants') + AND i_brand IN ( + 'amalgimporto #1', + 'edu packscholar #1', + 'exportiimporto #1', + 'importoamalg #1' + ) + ) + ) + GROUP BY i_manager_id, d_moy + ) tmp1 +WHERE + CASE + WHEN avg_monthly_sales > 0 + THEN abs(sum_sales - avg_monthly_sales) / avg_monthly_sales + ELSE null + END + > 0.1 +ORDER BY i_manager_id, avg_monthly_sales, sum_sales +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/64.sql b/datafusion/core/tests/tpc-ds/64.sql index 26ddceb941fb1..3c31b14e9d919 100644 --- a/datafusion/core/tests/tpc-ds/64.sql +++ b/datafusion/core/tests/tpc-ds/64.sql @@ -1,122 +1,118 @@ --- Copyright 2015 Transaction Processing Performance Council - -with cs_ui as - (select cs_item_sk - ,sum(cs_ext_list_price) as sale,sum(cr_refunded_cash+cr_reversed_charge+cr_store_credit) as refund - from catalog_sales - ,catalog_returns - where cs_item_sk = cr_item_sk - and cs_order_number = cr_order_number - group by cs_item_sk - having sum(cs_ext_list_price)>2*sum(cr_refunded_cash+cr_reversed_charge+cr_store_credit)), -cross_sales as - (select i_product_name product_name - ,i_item_sk item_sk - ,s_store_name store_name - ,s_zip store_zip - ,ad1.ca_street_number b_street_number - ,ad1.ca_street_name b_street_name - ,ad1.ca_city b_city - ,ad1.ca_zip b_zip - ,ad2.ca_street_number c_street_number - ,ad2.ca_street_name c_street_name - ,ad2.ca_city c_city - ,ad2.ca_zip c_zip - ,d1.d_year as syear - ,d2.d_year as fsyear - ,d3.d_year s2year - ,count(*) cnt - ,sum(ss_wholesale_cost) s1 - ,sum(ss_list_price) s2 - ,sum(ss_coupon_amt) s3 - FROM store_sales - ,store_returns - ,cs_ui - ,date_dim d1 - ,date_dim d2 - ,date_dim d3 - ,store - ,customer - ,customer_demographics cd1 - ,customer_demographics cd2 - ,promotion - ,household_demographics hd1 - ,household_demographics hd2 - ,customer_address ad1 - ,customer_address ad2 - ,income_band ib1 - ,income_band ib2 - ,item - WHERE ss_store_sk = s_store_sk AND - ss_sold_date_sk = d1.d_date_sk AND - ss_customer_sk = c_customer_sk AND - ss_cdemo_sk= cd1.cd_demo_sk AND - ss_hdemo_sk = hd1.hd_demo_sk AND - ss_addr_sk = ad1.ca_address_sk and - ss_item_sk = i_item_sk and - ss_item_sk = sr_item_sk and - ss_ticket_number = sr_ticket_number and - ss_item_sk = cs_ui.cs_item_sk and - c_current_cdemo_sk = cd2.cd_demo_sk AND - c_current_hdemo_sk = hd2.hd_demo_sk AND - c_current_addr_sk = ad2.ca_address_sk and - c_first_sales_date_sk = d2.d_date_sk and - c_first_shipto_date_sk = d3.d_date_sk and - ss_promo_sk = p_promo_sk and - hd1.hd_income_band_sk = ib1.ib_income_band_sk and - hd2.hd_income_band_sk = ib2.ib_income_band_sk and - cd1.cd_marital_status <> cd2.cd_marital_status and - i_color in ('maroon','burnished','dim','steel','navajo','chocolate') and - i_current_price between 35 and 35 + 10 and - i_current_price between 35 + 1 and 35 + 15 -group by i_product_name - ,i_item_sk - ,s_store_name - ,s_zip - ,ad1.ca_street_number - ,ad1.ca_street_name - ,ad1.ca_city - ,ad1.ca_zip - ,ad2.ca_street_number - ,ad2.ca_street_name - ,ad2.ca_city - ,ad2.ca_zip - ,d1.d_year - ,d2.d_year - ,d3.d_year -) -select cs1.product_name - ,cs1.store_name - ,cs1.store_zip - ,cs1.b_street_number - ,cs1.b_street_name - ,cs1.b_city - ,cs1.b_zip - ,cs1.c_street_number - ,cs1.c_street_name - ,cs1.c_city - ,cs1.c_zip - ,cs1.syear - ,cs1.cnt - ,cs1.s1 as s11 - ,cs1.s2 as s21 - ,cs1.s3 as s31 - ,cs2.s1 as s12 - ,cs2.s2 as s22 - ,cs2.s3 as s32 - ,cs2.syear - ,cs2.cnt -from cross_sales cs1,cross_sales cs2 -where cs1.item_sk=cs2.item_sk and - cs1.syear = 2000 and - cs2.syear = 2000 + 1 and - cs2.cnt <= cs1.cnt and - cs1.store_name = cs2.store_name and - cs1.store_zip = cs2.store_zip -order by cs1.product_name - ,cs1.store_name - ,cs2.cnt - ,cs1.s1 - ,cs2.s1; - - +WITH cs_ui AS (SELECT cs_item_sk, + sum(cs_ext_list_price) AS sale, + sum(cr_refunded_cash + cr_reversed_charge + cr_store_credit) AS refund + FROM catalog_sales, + catalog_returns + WHERE cs_item_sk = cr_item_sk + AND cs_order_number = cr_order_number + GROUP BY cs_item_sk + HAVING sum(cs_ext_list_price) + > 2 * sum(cr_refunded_cash + cr_reversed_charge + cr_store_credit)) + , cross_sales AS (SELECT i_product_name product_name, + i_item_sk item_sk, + s_store_name store_name, + s_zip store_zip, + ad1.ca_street_number b_street_number, + ad1.ca_street_name b_street_name, + ad1.ca_city b_city, + ad1.ca_zip b_zip, + ad2.ca_street_number c_street_number, + ad2.ca_street_name c_street_name, + ad2.ca_city c_city, + ad2.ca_zip c_zip, + d1.d_year AS syear, + d2.d_year AS fsyear, + d3.d_year s2year, + count(*) cnt, + sum(ss_wholesale_cost) s1, + sum(ss_list_price) s2, + sum(ss_coupon_amt) s3 + FROM store_sales, + store_returns, + cs_ui, + date_dim d1, + date_dim d2, + date_dim d3, + store, + customer, + customer_demographics cd1, + customer_demographics cd2, + promotion, + household_demographics hd1, + household_demographics hd2, + customer_address ad1, + customer_address ad2, + income_band ib1, + income_band ib2, + item + WHERE ss_store_sk = s_store_sk + AND ss_sold_date_sk = d1.d_date_sk + AND ss_customer_sk = c_customer_sk + AND ss_cdemo_sk = cd1.cd_demo_sk + AND ss_hdemo_sk = hd1.hd_demo_sk + AND ss_addr_sk = ad1.ca_address_sk + AND ss_item_sk = i_item_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND ss_item_sk = cs_ui.cs_item_sk + AND c_current_cdemo_sk = cd2.cd_demo_sk + AND c_current_hdemo_sk = hd2.hd_demo_sk + AND c_current_addr_sk = ad2.ca_address_sk + AND c_first_sales_date_sk = d2.d_date_sk + AND c_first_shipto_date_sk = d3.d_date_sk + AND ss_promo_sk = p_promo_sk + AND hd1.hd_income_band_sk = ib1.ib_income_band_sk + AND hd2.hd_income_band_sk = ib2.ib_income_band_sk + AND cd1.cd_marital_status <> cd2.cd_marital_status + AND i_color + IN ('purple', 'burlywood', 'indian', 'spring', 'floral', 'medium') + AND i_current_price BETWEEN 64 + AND 64 + 10 + AND i_current_price BETWEEN 64 + 1 + AND 64 + 15 + GROUP BY i_product_name, + i_item_sk, + s_store_name, + s_zip, + ad1.ca_street_number, + ad1.ca_street_name, + ad1.ca_city, + ad1.ca_zip, + ad2.ca_street_number, + ad2.ca_street_name, + ad2.ca_city, + ad2.ca_zip, + d1.d_year, + d2.d_year, + d3.d_year) +SELECT cs1.product_name, + cs1.store_name, + cs1.store_zip, + cs1.b_street_number, + cs1.b_street_name, + cs1.b_city, + cs1.b_zip, + cs1.c_street_number, + cs1.c_street_name, + cs1.c_city, + cs1.c_zip, + cs1.syear, + cs1.cnt, + cs1.s1 AS s11, + cs1.s2 AS s21, + cs1.s3 AS s31, + cs2.s1 AS s12, + cs2.s2 AS s22, + cs2.s3 AS s32, + cs2.syear AS syear_2, + cs2.cnt AS cnt_2 +FROM cross_sales cs1, + cross_sales cs2 +WHERE cs1.item_sk = cs2.item_sk + AND cs1.syear = 1999 + AND cs2.syear = 1999 + 1 + AND cs2.cnt <= cs1.cnt + AND cs1.store_name = cs2.store_name + AND cs1.store_zip = cs2.store_zip +ORDER BY cs1.product_name, cs1.store_name, cs2.cnt, cs1.s1, cs2.s1 +; diff --git a/datafusion/core/tests/tpc-ds/65.sql b/datafusion/core/tests/tpc-ds/65.sql index 36e3e48518e02..c71314709e3bb 100644 --- a/datafusion/core/tests/tpc-ds/65.sql +++ b/datafusion/core/tests/tpc-ds/65.sql @@ -1,30 +1,31 @@ --- Copyright 2015 Transaction Processing Performance Council - -select - s_store_name, - i_item_desc, - sc.revenue, - i_current_price, - i_wholesale_cost, - i_brand - from store, item, - (select ss_store_sk, avg(revenue) as ave - from - (select ss_store_sk, ss_item_sk, - sum(ss_sales_price) as revenue - from store_sales, date_dim - where ss_sold_date_sk = d_date_sk and d_month_seq between 1212 and 1212+11 - group by ss_store_sk, ss_item_sk) sa - group by ss_store_sk) sb, - (select ss_store_sk, ss_item_sk, sum(ss_sales_price) as revenue - from store_sales, date_dim - where ss_sold_date_sk = d_date_sk and d_month_seq between 1212 and 1212+11 - group by ss_store_sk, ss_item_sk) sc - where sb.ss_store_sk = sc.ss_store_sk and - sc.revenue <= 0.1 * sb.ave and - s_store_sk = sc.ss_store_sk and - i_item_sk = sc.ss_item_sk - order by s_store_name, i_item_desc -limit 100; - - +SELECT s_store_name, i_item_desc, sc.revenue, i_current_price, i_wholesale_cost, i_brand +FROM + store, + item, + ( + SELECT ss_store_sk, avg(revenue) AS ave + FROM + ( + SELECT ss_store_sk, ss_item_sk, sum(ss_sales_price) AS revenue + FROM store_sales, date_dim + WHERE + ss_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1176 AND 1176 + 11 + GROUP BY ss_store_sk, ss_item_sk + ) sa + GROUP BY ss_store_sk + ) sb, + ( + SELECT ss_store_sk, ss_item_sk, sum(ss_sales_price) AS revenue + FROM store_sales, date_dim + WHERE ss_sold_date_sk = d_date_sk AND d_month_seq BETWEEN 1176 AND 1176 + 11 + GROUP BY ss_store_sk, ss_item_sk + ) sc +WHERE + sb.ss_store_sk = sc.ss_store_sk + AND sc.revenue <= 0.1 * sb.ave + AND s_store_sk = sc.ss_store_sk + AND i_item_sk = sc.ss_item_sk +ORDER BY s_store_name, i_item_desc +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/66.sql b/datafusion/core/tests/tpc-ds/66.sql index 0840f234aa9dd..6cb92ecbbf00c 100644 --- a/datafusion/core/tests/tpc-ds/66.sql +++ b/datafusion/core/tests/tpc-ds/66.sql @@ -1,221 +1,257 @@ --- Copyright 2015 Transaction Processing Performance Council - -select - w_warehouse_name - ,w_warehouse_sq_ft - ,w_city - ,w_county - ,w_state - ,w_country - ,ship_carriers - ,year - ,sum(jan_sales) as jan_sales - ,sum(feb_sales) as feb_sales - ,sum(mar_sales) as mar_sales - ,sum(apr_sales) as apr_sales - ,sum(may_sales) as may_sales - ,sum(jun_sales) as jun_sales - ,sum(jul_sales) as jul_sales - ,sum(aug_sales) as aug_sales - ,sum(sep_sales) as sep_sales - ,sum(oct_sales) as oct_sales - ,sum(nov_sales) as nov_sales - ,sum(dec_sales) as dec_sales - ,sum(jan_sales/w_warehouse_sq_ft) as jan_sales_per_sq_foot - ,sum(feb_sales/w_warehouse_sq_ft) as feb_sales_per_sq_foot - ,sum(mar_sales/w_warehouse_sq_ft) as mar_sales_per_sq_foot - ,sum(apr_sales/w_warehouse_sq_ft) as apr_sales_per_sq_foot - ,sum(may_sales/w_warehouse_sq_ft) as may_sales_per_sq_foot - ,sum(jun_sales/w_warehouse_sq_ft) as jun_sales_per_sq_foot - ,sum(jul_sales/w_warehouse_sq_ft) as jul_sales_per_sq_foot - ,sum(aug_sales/w_warehouse_sq_ft) as aug_sales_per_sq_foot - ,sum(sep_sales/w_warehouse_sq_ft) as sep_sales_per_sq_foot - ,sum(oct_sales/w_warehouse_sq_ft) as oct_sales_per_sq_foot - ,sum(nov_sales/w_warehouse_sq_ft) as nov_sales_per_sq_foot - ,sum(dec_sales/w_warehouse_sq_ft) as dec_sales_per_sq_foot - ,sum(jan_net) as jan_net - ,sum(feb_net) as feb_net - ,sum(mar_net) as mar_net - ,sum(apr_net) as apr_net - ,sum(may_net) as may_net - ,sum(jun_net) as jun_net - ,sum(jul_net) as jul_net - ,sum(aug_net) as aug_net - ,sum(sep_net) as sep_net - ,sum(oct_net) as oct_net - ,sum(nov_net) as nov_net - ,sum(dec_net) as dec_net - from ( - select - w_warehouse_name - ,w_warehouse_sq_ft - ,w_city - ,w_county - ,w_state - ,w_country - ,'DIAMOND' || ',' || 'AIRBORNE' as ship_carriers - ,d_year as year - ,sum(case when d_moy = 1 - then ws_sales_price* ws_quantity else 0 end) as jan_sales - ,sum(case when d_moy = 2 - then ws_sales_price* ws_quantity else 0 end) as feb_sales - ,sum(case when d_moy = 3 - then ws_sales_price* ws_quantity else 0 end) as mar_sales - ,sum(case when d_moy = 4 - then ws_sales_price* ws_quantity else 0 end) as apr_sales - ,sum(case when d_moy = 5 - then ws_sales_price* ws_quantity else 0 end) as may_sales - ,sum(case when d_moy = 6 - then ws_sales_price* ws_quantity else 0 end) as jun_sales - ,sum(case when d_moy = 7 - then ws_sales_price* ws_quantity else 0 end) as jul_sales - ,sum(case when d_moy = 8 - then ws_sales_price* ws_quantity else 0 end) as aug_sales - ,sum(case when d_moy = 9 - then ws_sales_price* ws_quantity else 0 end) as sep_sales - ,sum(case when d_moy = 10 - then ws_sales_price* ws_quantity else 0 end) as oct_sales - ,sum(case when d_moy = 11 - then ws_sales_price* ws_quantity else 0 end) as nov_sales - ,sum(case when d_moy = 12 - then ws_sales_price* ws_quantity else 0 end) as dec_sales - ,sum(case when d_moy = 1 - then ws_net_paid_inc_tax * ws_quantity else 0 end) as jan_net - ,sum(case when d_moy = 2 - then ws_net_paid_inc_tax * ws_quantity else 0 end) as feb_net - ,sum(case when d_moy = 3 - then ws_net_paid_inc_tax * ws_quantity else 0 end) as mar_net - ,sum(case when d_moy = 4 - then ws_net_paid_inc_tax * ws_quantity else 0 end) as apr_net - ,sum(case when d_moy = 5 - then ws_net_paid_inc_tax * ws_quantity else 0 end) as may_net - ,sum(case when d_moy = 6 - then ws_net_paid_inc_tax * ws_quantity else 0 end) as jun_net - ,sum(case when d_moy = 7 - then ws_net_paid_inc_tax * ws_quantity else 0 end) as jul_net - ,sum(case when d_moy = 8 - then ws_net_paid_inc_tax * ws_quantity else 0 end) as aug_net - ,sum(case when d_moy = 9 - then ws_net_paid_inc_tax * ws_quantity else 0 end) as sep_net - ,sum(case when d_moy = 10 - then ws_net_paid_inc_tax * ws_quantity else 0 end) as oct_net - ,sum(case when d_moy = 11 - then ws_net_paid_inc_tax * ws_quantity else 0 end) as nov_net - ,sum(case when d_moy = 12 - then ws_net_paid_inc_tax * ws_quantity else 0 end) as dec_net - from - web_sales - ,warehouse - ,date_dim - ,time_dim - ,ship_mode - where - ws_warehouse_sk = w_warehouse_sk - and ws_sold_date_sk = d_date_sk - and ws_sold_time_sk = t_time_sk - and ws_ship_mode_sk = sm_ship_mode_sk - and d_year = 2002 - and t_time between 49530 and 49530+28800 - and sm_carrier in ('DIAMOND','AIRBORNE') - group by - w_warehouse_name - ,w_warehouse_sq_ft - ,w_city - ,w_county - ,w_state - ,w_country - ,d_year - union all - select - w_warehouse_name - ,w_warehouse_sq_ft - ,w_city - ,w_county - ,w_state - ,w_country - ,'DIAMOND' || ',' || 'AIRBORNE' as ship_carriers - ,d_year as year - ,sum(case when d_moy = 1 - then cs_ext_sales_price* cs_quantity else 0 end) as jan_sales - ,sum(case when d_moy = 2 - then cs_ext_sales_price* cs_quantity else 0 end) as feb_sales - ,sum(case when d_moy = 3 - then cs_ext_sales_price* cs_quantity else 0 end) as mar_sales - ,sum(case when d_moy = 4 - then cs_ext_sales_price* cs_quantity else 0 end) as apr_sales - ,sum(case when d_moy = 5 - then cs_ext_sales_price* cs_quantity else 0 end) as may_sales - ,sum(case when d_moy = 6 - then cs_ext_sales_price* cs_quantity else 0 end) as jun_sales - ,sum(case when d_moy = 7 - then cs_ext_sales_price* cs_quantity else 0 end) as jul_sales - ,sum(case when d_moy = 8 - then cs_ext_sales_price* cs_quantity else 0 end) as aug_sales - ,sum(case when d_moy = 9 - then cs_ext_sales_price* cs_quantity else 0 end) as sep_sales - ,sum(case when d_moy = 10 - then cs_ext_sales_price* cs_quantity else 0 end) as oct_sales - ,sum(case when d_moy = 11 - then cs_ext_sales_price* cs_quantity else 0 end) as nov_sales - ,sum(case when d_moy = 12 - then cs_ext_sales_price* cs_quantity else 0 end) as dec_sales - ,sum(case when d_moy = 1 - then cs_net_paid_inc_ship_tax * cs_quantity else 0 end) as jan_net - ,sum(case when d_moy = 2 - then cs_net_paid_inc_ship_tax * cs_quantity else 0 end) as feb_net - ,sum(case when d_moy = 3 - then cs_net_paid_inc_ship_tax * cs_quantity else 0 end) as mar_net - ,sum(case when d_moy = 4 - then cs_net_paid_inc_ship_tax * cs_quantity else 0 end) as apr_net - ,sum(case when d_moy = 5 - then cs_net_paid_inc_ship_tax * cs_quantity else 0 end) as may_net - ,sum(case when d_moy = 6 - then cs_net_paid_inc_ship_tax * cs_quantity else 0 end) as jun_net - ,sum(case when d_moy = 7 - then cs_net_paid_inc_ship_tax * cs_quantity else 0 end) as jul_net - ,sum(case when d_moy = 8 - then cs_net_paid_inc_ship_tax * cs_quantity else 0 end) as aug_net - ,sum(case when d_moy = 9 - then cs_net_paid_inc_ship_tax * cs_quantity else 0 end) as sep_net - ,sum(case when d_moy = 10 - then cs_net_paid_inc_ship_tax * cs_quantity else 0 end) as oct_net - ,sum(case when d_moy = 11 - then cs_net_paid_inc_ship_tax * cs_quantity else 0 end) as nov_net - ,sum(case when d_moy = 12 - then cs_net_paid_inc_ship_tax * cs_quantity else 0 end) as dec_net - from - catalog_sales - ,warehouse - ,date_dim - ,time_dim - ,ship_mode - where - cs_warehouse_sk = w_warehouse_sk - and cs_sold_date_sk = d_date_sk - and cs_sold_time_sk = t_time_sk - and cs_ship_mode_sk = sm_ship_mode_sk - and d_year = 2002 - and t_time between 49530 AND 49530+28800 - and sm_carrier in ('DIAMOND','AIRBORNE') - group by - w_warehouse_name - ,w_warehouse_sq_ft - ,w_city - ,w_county - ,w_state - ,w_country - ,d_year - ) x - group by - w_warehouse_name - ,w_warehouse_sq_ft - ,w_city - ,w_county - ,w_state - ,w_country - ,ship_carriers - ,year - order by w_warehouse_name - limit 100; - - +SELECT + w_warehouse_name, + w_warehouse_sq_ft, + w_city, + w_county, + w_state, + w_country, + ship_carriers, + year, + sum(jan_sales) AS jan_sales, + sum(feb_sales) AS feb_sales, + sum(mar_sales) AS mar_sales, + sum(apr_sales) AS apr_sales, + sum(may_sales) AS may_sales, + sum(jun_sales) AS jun_sales, + sum(jul_sales) AS jul_sales, + sum(aug_sales) AS aug_sales, + sum(sep_sales) AS sep_sales, + sum(oct_sales) AS oct_sales, + sum(nov_sales) AS nov_sales, + sum(dec_sales) AS dec_sales, + sum(jan_sales / w_warehouse_sq_ft) AS jan_sales_per_sq_foot, + sum(feb_sales / w_warehouse_sq_ft) AS feb_sales_per_sq_foot, + sum(mar_sales / w_warehouse_sq_ft) AS mar_sales_per_sq_foot, + sum(apr_sales / w_warehouse_sq_ft) AS apr_sales_per_sq_foot, + sum(may_sales / w_warehouse_sq_ft) AS may_sales_per_sq_foot, + sum(jun_sales / w_warehouse_sq_ft) AS jun_sales_per_sq_foot, + sum(jul_sales / w_warehouse_sq_ft) AS jul_sales_per_sq_foot, + sum(aug_sales / w_warehouse_sq_ft) AS aug_sales_per_sq_foot, + sum(sep_sales / w_warehouse_sq_ft) AS sep_sales_per_sq_foot, + sum(oct_sales / w_warehouse_sq_ft) AS oct_sales_per_sq_foot, + sum(nov_sales / w_warehouse_sq_ft) AS nov_sales_per_sq_foot, + sum(dec_sales / w_warehouse_sq_ft) AS dec_sales_per_sq_foot, + sum(jan_net) AS jan_net, + sum(feb_net) AS feb_net, + sum(mar_net) AS mar_net, + sum(apr_net) AS apr_net, + sum(may_net) AS may_net, + sum(jun_net) AS jun_net, + sum(jul_net) AS jul_net, + sum(aug_net) AS aug_net, + sum(sep_net) AS sep_net, + sum(oct_net) AS oct_net, + sum(nov_net) AS nov_net, + sum(dec_net) AS dec_net +FROM + ( + SELECT + w_warehouse_name, + w_warehouse_sq_ft, + w_city, + w_county, + w_state, + w_country, + concat('DHL', ',', 'BARIAN') AS ship_carriers, + d_year AS year, + sum( + CASE WHEN d_moy = 1 THEN ws_ext_sales_price * ws_quantity ELSE 0 END + ) AS jan_sales, + sum( + CASE WHEN d_moy = 2 THEN ws_ext_sales_price * ws_quantity ELSE 0 END + ) AS feb_sales, + sum( + CASE WHEN d_moy = 3 THEN ws_ext_sales_price * ws_quantity ELSE 0 END + ) AS mar_sales, + sum( + CASE WHEN d_moy = 4 THEN ws_ext_sales_price * ws_quantity ELSE 0 END + ) AS apr_sales, + sum( + CASE WHEN d_moy = 5 THEN ws_ext_sales_price * ws_quantity ELSE 0 END + ) AS may_sales, + sum( + CASE WHEN d_moy = 6 THEN ws_ext_sales_price * ws_quantity ELSE 0 END + ) AS jun_sales, + sum( + CASE WHEN d_moy = 7 THEN ws_ext_sales_price * ws_quantity ELSE 0 END + ) AS jul_sales, + sum( + CASE WHEN d_moy = 8 THEN ws_ext_sales_price * ws_quantity ELSE 0 END + ) AS aug_sales, + sum( + CASE WHEN d_moy = 9 THEN ws_ext_sales_price * ws_quantity ELSE 0 END + ) AS sep_sales, + sum( + CASE WHEN d_moy = 10 THEN ws_ext_sales_price * ws_quantity ELSE 0 END + ) AS oct_sales, + sum( + CASE WHEN d_moy = 11 THEN ws_ext_sales_price * ws_quantity ELSE 0 END + ) AS nov_sales, + sum( + CASE WHEN d_moy = 12 THEN ws_ext_sales_price * ws_quantity ELSE 0 END + ) AS dec_sales, + sum( + CASE WHEN d_moy = 1 THEN ws_net_paid * ws_quantity ELSE 0 END + ) AS jan_net, + sum( + CASE WHEN d_moy = 2 THEN ws_net_paid * ws_quantity ELSE 0 END + ) AS feb_net, + sum( + CASE WHEN d_moy = 3 THEN ws_net_paid * ws_quantity ELSE 0 END + ) AS mar_net, + sum( + CASE WHEN d_moy = 4 THEN ws_net_paid * ws_quantity ELSE 0 END + ) AS apr_net, + sum( + CASE WHEN d_moy = 5 THEN ws_net_paid * ws_quantity ELSE 0 END + ) AS may_net, + sum( + CASE WHEN d_moy = 6 THEN ws_net_paid * ws_quantity ELSE 0 END + ) AS jun_net, + sum( + CASE WHEN d_moy = 7 THEN ws_net_paid * ws_quantity ELSE 0 END + ) AS jul_net, + sum( + CASE WHEN d_moy = 8 THEN ws_net_paid * ws_quantity ELSE 0 END + ) AS aug_net, + sum( + CASE WHEN d_moy = 9 THEN ws_net_paid * ws_quantity ELSE 0 END + ) AS sep_net, + sum( + CASE WHEN d_moy = 10 THEN ws_net_paid * ws_quantity ELSE 0 END + ) AS oct_net, + sum( + CASE WHEN d_moy = 11 THEN ws_net_paid * ws_quantity ELSE 0 END + ) AS nov_net, + sum( + CASE WHEN d_moy = 12 THEN ws_net_paid * ws_quantity ELSE 0 END + ) AS dec_net + FROM web_sales, warehouse, date_dim, time_dim, ship_mode + WHERE + ws_warehouse_sk = w_warehouse_sk + AND ws_sold_date_sk = d_date_sk + AND ws_sold_time_sk = t_time_sk + AND ws_ship_mode_sk = sm_ship_mode_sk + AND d_year = 2001 + AND t_time BETWEEN 30838 AND 30838 + 28800 + AND sm_carrier IN ('DHL', 'BARIAN') + GROUP BY + w_warehouse_name, + w_warehouse_sq_ft, + w_city, + w_county, + w_state, + w_country, + d_year + UNION ALL + SELECT + w_warehouse_name, + w_warehouse_sq_ft, + w_city, + w_county, + w_state, + w_country, + concat('DHL', ',', 'BARIAN') AS ship_carriers, + d_year AS year, + sum( + CASE WHEN d_moy = 1 THEN cs_sales_price * cs_quantity ELSE 0 END + ) AS jan_sales, + sum( + CASE WHEN d_moy = 2 THEN cs_sales_price * cs_quantity ELSE 0 END + ) AS feb_sales, + sum( + CASE WHEN d_moy = 3 THEN cs_sales_price * cs_quantity ELSE 0 END + ) AS mar_sales, + sum( + CASE WHEN d_moy = 4 THEN cs_sales_price * cs_quantity ELSE 0 END + ) AS apr_sales, + sum( + CASE WHEN d_moy = 5 THEN cs_sales_price * cs_quantity ELSE 0 END + ) AS may_sales, + sum( + CASE WHEN d_moy = 6 THEN cs_sales_price * cs_quantity ELSE 0 END + ) AS jun_sales, + sum( + CASE WHEN d_moy = 7 THEN cs_sales_price * cs_quantity ELSE 0 END + ) AS jul_sales, + sum( + CASE WHEN d_moy = 8 THEN cs_sales_price * cs_quantity ELSE 0 END + ) AS aug_sales, + sum( + CASE WHEN d_moy = 9 THEN cs_sales_price * cs_quantity ELSE 0 END + ) AS sep_sales, + sum( + CASE WHEN d_moy = 10 THEN cs_sales_price * cs_quantity ELSE 0 END + ) AS oct_sales, + sum( + CASE WHEN d_moy = 11 THEN cs_sales_price * cs_quantity ELSE 0 END + ) AS nov_sales, + sum( + CASE WHEN d_moy = 12 THEN cs_sales_price * cs_quantity ELSE 0 END + ) AS dec_sales, + sum( + CASE WHEN d_moy = 1 THEN cs_net_paid_inc_tax * cs_quantity ELSE 0 END + ) AS jan_net, + sum( + CASE WHEN d_moy = 2 THEN cs_net_paid_inc_tax * cs_quantity ELSE 0 END + ) AS feb_net, + sum( + CASE WHEN d_moy = 3 THEN cs_net_paid_inc_tax * cs_quantity ELSE 0 END + ) AS mar_net, + sum( + CASE WHEN d_moy = 4 THEN cs_net_paid_inc_tax * cs_quantity ELSE 0 END + ) AS apr_net, + sum( + CASE WHEN d_moy = 5 THEN cs_net_paid_inc_tax * cs_quantity ELSE 0 END + ) AS may_net, + sum( + CASE WHEN d_moy = 6 THEN cs_net_paid_inc_tax * cs_quantity ELSE 0 END + ) AS jun_net, + sum( + CASE WHEN d_moy = 7 THEN cs_net_paid_inc_tax * cs_quantity ELSE 0 END + ) AS jul_net, + sum( + CASE WHEN d_moy = 8 THEN cs_net_paid_inc_tax * cs_quantity ELSE 0 END + ) AS aug_net, + sum( + CASE WHEN d_moy = 9 THEN cs_net_paid_inc_tax * cs_quantity ELSE 0 END + ) AS sep_net, + sum( + CASE WHEN d_moy = 10 THEN cs_net_paid_inc_tax * cs_quantity ELSE 0 END + ) AS oct_net, + sum( + CASE WHEN d_moy = 11 THEN cs_net_paid_inc_tax * cs_quantity ELSE 0 END + ) AS nov_net, + sum( + CASE WHEN d_moy = 12 THEN cs_net_paid_inc_tax * cs_quantity ELSE 0 END + ) AS dec_net + FROM catalog_sales, warehouse, date_dim, time_dim, ship_mode + WHERE + cs_warehouse_sk = w_warehouse_sk + AND cs_sold_date_sk = d_date_sk + AND cs_sold_time_sk = t_time_sk + AND cs_ship_mode_sk = sm_ship_mode_sk + AND d_year = 2001 + AND t_time BETWEEN 30838 AND 30838 + 28800 + AND sm_carrier IN ('DHL', 'BARIAN') + GROUP BY + w_warehouse_name, + w_warehouse_sq_ft, + w_city, + w_county, + w_state, + w_country, + d_year + ) x +GROUP BY + w_warehouse_name, + w_warehouse_sq_ft, + w_city, + w_county, + w_state, + w_country, + ship_carriers, + year +ORDER BY w_warehouse_name +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/67.sql b/datafusion/core/tests/tpc-ds/67.sql index 55fa8d240f976..96866cc94ee00 100644 --- a/datafusion/core/tests/tpc-ds/67.sql +++ b/datafusion/core/tests/tpc-ds/67.sql @@ -1,45 +1,59 @@ --- Copyright 2015 Transaction Processing Performance Council - -select * -from (select i_category - ,i_class - ,i_brand - ,i_product_name - ,d_year - ,d_qoy - ,d_moy - ,s_store_id - ,sumsales - ,rank() over (partition by i_category order by sumsales desc) rk - from (select i_category - ,i_class - ,i_brand - ,i_product_name - ,d_year - ,d_qoy - ,d_moy - ,s_store_id - ,sum(coalesce(ss_sales_price*ss_quantity,0)) sumsales - from store_sales - ,date_dim - ,store - ,item - where ss_sold_date_sk=d_date_sk - and ss_item_sk=i_item_sk - and ss_store_sk = s_store_sk - and d_month_seq between 1212 and 1212+11 - group by rollup(i_category, i_class, i_brand, i_product_name, d_year, d_qoy, d_moy,s_store_id))dw1) dw2 -where rk <= 100 -order by i_category - ,i_class - ,i_brand - ,i_product_name - ,d_year - ,d_qoy - ,d_moy - ,s_store_id - ,sumsales - ,rk -limit 100; - - +SELECT * +FROM + ( + SELECT + i_category, + i_class, + i_brand, + i_product_name, + d_year, + d_qoy, + d_moy, + s_store_id, + sumsales, + rank() OVER (PARTITION BY i_category ORDER BY sumsales desc) rk + FROM + ( + SELECT + i_category, + i_class, + i_brand, + i_product_name, + d_year, + d_qoy, + d_moy, + s_store_id, + sum(coalesce(ss_sales_price * ss_quantity, 0)) sumsales + FROM store_sales, date_dim, store, item + WHERE + ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND ss_store_sk = s_store_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 + GROUP BY + rollup ( + i_category, + i_class, + i_brand, + i_product_name, + d_year, + d_qoy, + d_moy, + s_store_id + ) + ) dw1 + ) dw2 +WHERE rk <= 100 +ORDER BY + i_category, + i_class, + i_brand, + i_product_name, + d_year, + d_qoy, + d_moy, + s_store_id, + sumsales, + rk +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/68.sql b/datafusion/core/tests/tpc-ds/68.sql index 350f7f7c79518..579aa0b21acef 100644 --- a/datafusion/core/tests/tpc-ds/68.sql +++ b/datafusion/core/tests/tpc-ds/68.sql @@ -1,43 +1,42 @@ --- Copyright 2015 Transaction Processing Performance Council - -select c_last_name - ,c_first_name - ,ca_city - ,bought_city - ,ss_ticket_number - ,extended_price - ,extended_tax - ,list_price - from (select ss_ticket_number - ,ss_customer_sk - ,ca_city bought_city - ,sum(ss_ext_sales_price) extended_price - ,sum(ss_ext_list_price) list_price - ,sum(ss_ext_tax) extended_tax - from store_sales - ,date_dim - ,store - ,household_demographics - ,customer_address - where store_sales.ss_sold_date_sk = date_dim.d_date_sk - and store_sales.ss_store_sk = store.s_store_sk - and store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk - and store_sales.ss_addr_sk = customer_address.ca_address_sk - and date_dim.d_dom between 1 and 2 - and (household_demographics.hd_dep_count = 6 or - household_demographics.hd_vehicle_count= 3) - and date_dim.d_year in (1999,1999+1,1999+2) - and store.s_city in ('Oakland','Riverside') - group by ss_ticket_number - ,ss_customer_sk - ,ss_addr_sk,ca_city) dn - ,customer - ,customer_address current_addr - where ss_customer_sk = c_customer_sk - and customer.c_current_addr_sk = current_addr.ca_address_sk - and current_addr.ca_city <> bought_city - order by c_last_name - ,ss_ticket_number - limit 100; - - +SELECT + c_last_name, + c_first_name, + ca_city, + bought_city, + ss_ticket_number, + extended_price, + extended_tax, + list_price +FROM + ( + SELECT + ss_ticket_number, + ss_customer_sk, + ca_city bought_city, + sum(ss_ext_sales_price) extended_price, + sum(ss_ext_list_price) list_price, + sum(ss_ext_tax) extended_tax + FROM store_sales, date_dim, store, household_demographics, customer_address + WHERE + store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND store_sales.ss_addr_sk = customer_address.ca_address_sk + AND date_dim.d_dom BETWEEN 1 AND 2 + AND ( + household_demographics.hd_dep_count = 4 + OR household_demographics.hd_vehicle_count = 3 + ) + AND date_dim.d_year IN (1999, 1999 + 1, 1999 + 2) + AND store.s_city IN ('Fairview', 'Midway') + GROUP BY ss_ticket_number, ss_customer_sk, ss_addr_sk, ca_city + ) dn, + customer, + customer_address current_addr +WHERE + ss_customer_sk = c_customer_sk + AND customer.c_current_addr_sk = current_addr.ca_address_sk + AND current_addr.ca_city <> bought_city +ORDER BY c_last_name, ss_ticket_number +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/69.sql b/datafusion/core/tests/tpc-ds/69.sql index 538c96445abf0..db36ac4c18eb0 100644 --- a/datafusion/core/tests/tpc-ds/69.sql +++ b/datafusion/core/tests/tpc-ds/69.sql @@ -1,48 +1,57 @@ --- Copyright 2015 Transaction Processing Performance Council - -select - cd_gender, - cd_marital_status, - cd_education_status, - count(*) cnt1, - cd_purchase_estimate, - count(*) cnt2, - cd_credit_rating, - count(*) cnt3 - from - customer c,customer_address ca,customer_demographics - where - c.c_current_addr_sk = ca.ca_address_sk and - ca_state in ('CO','IL','MN') and - cd_demo_sk = c.c_current_cdemo_sk and - exists (select * - from store_sales,date_dim - where c.c_customer_sk = ss_customer_sk and - ss_sold_date_sk = d_date_sk and - d_year = 1999 and - d_moy between 1 and 1+2) and - (not exists (select * - from web_sales,date_dim - where c.c_customer_sk = ws_bill_customer_sk and - ws_sold_date_sk = d_date_sk and - d_year = 1999 and - d_moy between 1 and 1+2) and - not exists (select * - from catalog_sales,date_dim - where c.c_customer_sk = cs_ship_customer_sk and - cs_sold_date_sk = d_date_sk and - d_year = 1999 and - d_moy between 1 and 1+2)) - group by cd_gender, - cd_marital_status, - cd_education_status, - cd_purchase_estimate, - cd_credit_rating - order by cd_gender, - cd_marital_status, - cd_education_status, - cd_purchase_estimate, - cd_credit_rating - limit 100; - - +SELECT + cd_gender, + cd_marital_status, + cd_education_status, + count(*) cnt1, + cd_purchase_estimate, + count(*) cnt2, + cd_credit_rating, + count(*) cnt3 +FROM customer c, customer_address ca, customer_demographics +WHERE + c.c_current_addr_sk = ca.ca_address_sk + AND ca_state IN ('KY', 'GA', 'NM') + AND cd_demo_sk = c.c_current_cdemo_sk + AND exists ( + SELECT * + FROM store_sales, date_dim + WHERE + c.c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy BETWEEN 4 AND 4 + 2 + ) + AND ( + NOT exists ( + SELECT * + FROM web_sales, date_dim + WHERE + c.c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy BETWEEN 4 AND 4 + 2 + ) + AND NOT exists ( + SELECT * + FROM catalog_sales, date_dim + WHERE + c.c_customer_sk = cs_ship_customer_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy BETWEEN 4 AND 4 + 2 + ) + ) +GROUP BY + cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating +ORDER BY + cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/7.sql b/datafusion/core/tests/tpc-ds/7.sql index 3b5a09d6ef6de..a303106ee00a3 100644 --- a/datafusion/core/tests/tpc-ds/7.sql +++ b/datafusion/core/tests/tpc-ds/7.sql @@ -1,22 +1,21 @@ --- Copyright 2015 Transaction Processing Performance Council - -select i_item_id, - avg(ss_quantity) agg1, - avg(ss_list_price) agg2, - avg(ss_coupon_amt) agg3, - avg(ss_sales_price) agg4 - from store_sales, customer_demographics, date_dim, item, promotion - where ss_sold_date_sk = d_date_sk and - ss_item_sk = i_item_sk and - ss_cdemo_sk = cd_demo_sk and - ss_promo_sk = p_promo_sk and - cd_gender = 'F' and - cd_marital_status = 'W' and - cd_education_status = 'Primary' and - (p_channel_email = 'N' or p_channel_event = 'N') and - d_year = 1998 - group by i_item_id - order by i_item_id - limit 100; - - +SELECT + i_item_id, + avg(ss_quantity) agg1, + avg(ss_list_price) agg2, + avg(ss_coupon_amt) agg3, + avg(ss_sales_price) agg4 +FROM store_sales, customer_demographics, date_dim, item, promotion +WHERE + ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND ss_cdemo_sk = cd_demo_sk + AND ss_promo_sk = p_promo_sk + AND cd_gender = 'M' + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND (p_channel_email = 'N' OR p_channel_event = 'N') + AND d_year = 2000 +GROUP BY i_item_id +ORDER BY i_item_id +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/70.sql b/datafusion/core/tests/tpc-ds/70.sql index ca93a3af042de..e50ecb645becd 100644 --- a/datafusion/core/tests/tpc-ds/70.sql +++ b/datafusion/core/tests/tpc-ds/70.sql @@ -1,39 +1,39 @@ --- Copyright 2015 Transaction Processing Performance Council - -select - sum(ss_net_profit) as total_sum - ,s_state - ,s_county - ,grouping(s_state)+grouping(s_county) as lochierarchy - ,rank() over ( - partition by grouping(s_state)+grouping(s_county), - case when grouping(s_county) = 0 then s_state end - order by sum(ss_net_profit) desc) as rank_within_parent - from - store_sales - ,date_dim d1 - ,store - where - d1.d_month_seq between 1212 and 1212+11 - and d1.d_date_sk = ss_sold_date_sk - and s_store_sk = ss_store_sk - and s_state in - ( select s_state - from (select s_state as s_state, - rank() over ( partition by s_state order by sum(ss_net_profit) desc) as ranking - from store_sales, store, date_dim - where d_month_seq between 1212 and 1212+11 - and d_date_sk = ss_sold_date_sk - and s_store_sk = ss_store_sk - group by s_state - ) tmp1 - where ranking <= 5 - ) - group by rollup(s_state,s_county) - order by - lochierarchy desc - ,case when lochierarchy = 0 then s_state end - ,rank_within_parent - limit 100; - - +SELECT + sum(ss_net_profit) AS total_sum, + s_state, + s_county, + grouping(s_state) + grouping(s_county) AS lochierarchy, + rank() OVER ( + PARTITION BY + grouping(s_state) + grouping(s_county), + CASE WHEN grouping(s_county) = 0 THEN s_state END + ORDER BY sum(ss_net_profit) desc + ) AS rank_within_parent +FROM store_sales, date_dim d1, store +WHERE + d1.d_month_seq BETWEEN 1200 AND 1200 + 11 + AND d1.d_date_sk = ss_sold_date_sk + AND s_store_sk = ss_store_sk + AND s_state IN ( + SELECT s_state + FROM + ( + SELECT + s_state AS s_state, + rank() OVER ( + PARTITION BY s_state ORDER BY sum(ss_net_profit) desc + ) AS ranking + FROM store_sales, store, date_dim + WHERE + d_month_seq BETWEEN 1200 AND 1200 + 11 + AND d_date_sk = ss_sold_date_sk + AND s_store_sk = ss_store_sk + GROUP BY s_state + ) tmp1 + WHERE ranking <= 5 + ) +GROUP BY rollup (s_state, s_county) +ORDER BY + lochierarchy desc, CASE WHEN lochierarchy = 0 THEN s_state end, rank_within_parent +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/71.sql b/datafusion/core/tests/tpc-ds/71.sql index 4b82c1b1ac9fb..affa7be3ebdb7 100644 --- a/datafusion/core/tests/tpc-ds/71.sql +++ b/datafusion/core/tests/tpc-ds/71.sql @@ -1,41 +1,44 @@ --- Copyright 2015 Transaction Processing Performance Council - -select i_brand_id brand_id, i_brand brand,t_hour,t_minute, - sum(ext_price) ext_price - from item, (select ws_ext_sales_price as ext_price, - ws_sold_date_sk as sold_date_sk, - ws_item_sk as sold_item_sk, - ws_sold_time_sk as time_sk - from web_sales,date_dim - where d_date_sk = ws_sold_date_sk - and d_moy=12 - and d_year=2000 - union all - select cs_ext_sales_price as ext_price, - cs_sold_date_sk as sold_date_sk, - cs_item_sk as sold_item_sk, - cs_sold_time_sk as time_sk - from catalog_sales,date_dim - where d_date_sk = cs_sold_date_sk - and d_moy=12 - and d_year=2000 - union all - select ss_ext_sales_price as ext_price, - ss_sold_date_sk as sold_date_sk, - ss_item_sk as sold_item_sk, - ss_sold_time_sk as time_sk - from store_sales,date_dim - where d_date_sk = ss_sold_date_sk - and d_moy=12 - and d_year=2000 - ) tmp,time_dim - where - sold_item_sk = i_item_sk - and i_manager_id=1 - and time_sk = t_time_sk - and (t_meal_time = 'breakfast' or t_meal_time = 'dinner') - group by i_brand, i_brand_id,t_hour,t_minute - order by ext_price desc, i_brand_id - ; - - +SELECT i_brand_id brand_id, + i_brand brand, + t_hour, + t_minute, + sum(ext_price) ext_price +FROM item, + (SELECT ws_ext_sales_price AS ext_price, + ws_sold_date_sk AS sold_date_sk, + ws_item_sk AS sold_item_sk, + ws_sold_time_sk AS time_sk + FROM web_sales, + date_dim + WHERE d_date_sk = ws_sold_date_sk + AND d_moy = 11 + AND d_year = 1999 + UNION ALL + SELECT cs_ext_sales_price AS ext_price, + cs_sold_date_sk AS sold_date_sk, + cs_item_sk AS sold_item_sk, + cs_sold_time_sk AS time_sk + FROM catalog_sales, + date_dim + WHERE d_date_sk = cs_sold_date_sk + AND d_moy = 11 + AND d_year = 1999 + UNION ALL + SELECT ss_ext_sales_price AS ext_price, + ss_sold_date_sk AS sold_date_sk, + ss_item_sk AS sold_item_sk, + ss_sold_time_sk AS time_sk + FROM store_sales, + date_dim + WHERE d_date_sk = ss_sold_date_sk + AND d_moy = 11 + AND d_year = 1999) tmp, + time_dim +WHERE sold_item_sk = i_item_sk + AND i_manager_id = 1 + AND time_sk = t_time_sk + AND (t_meal_time = 'breakfast' + OR t_meal_time = 'dinner') +GROUP BY i_brand, i_brand_id, t_hour, t_minute +ORDER BY ext_price desc, i_brand_id +; diff --git a/datafusion/core/tests/tpc-ds/72.sql b/datafusion/core/tests/tpc-ds/72.sql index b561c46ac0762..a06866362314e 100644 --- a/datafusion/core/tests/tpc-ds/72.sql +++ b/datafusion/core/tests/tpc-ds/72.sql @@ -1,30 +1,30 @@ --- Copyright 2015 Transaction Processing Performance Council - -select i_item_desc - ,w_warehouse_name - ,d1.d_week_seq - ,sum(case when p_promo_sk is null then 1 else 0 end) no_promo - ,sum(case when p_promo_sk is not null then 1 else 0 end) promo - ,count(*) total_cnt -from catalog_sales -join inventory on (cs_item_sk = inv_item_sk) -join warehouse on (w_warehouse_sk=inv_warehouse_sk) -join item on (i_item_sk = cs_item_sk) -join customer_demographics on (cs_bill_cdemo_sk = cd_demo_sk) -join household_demographics on (cs_bill_hdemo_sk = hd_demo_sk) -join date_dim d1 on (cs_sold_date_sk = d1.d_date_sk) -join date_dim d2 on (inv_date_sk = d2.d_date_sk) -join date_dim d3 on (cs_ship_date_sk = d3.d_date_sk) -left outer join promotion on (cs_promo_sk=p_promo_sk) -left outer join catalog_returns on (cr_item_sk = cs_item_sk and cr_order_number = cs_order_number) -where d1.d_week_seq = d2.d_week_seq - and inv_quantity_on_hand < cs_quantity - and d3.d_date > (d1.d_date + INTERVAL '5 days') - and hd_buy_potential = '1001-5000' - and d1.d_year = 2001 - and cd_marital_status = 'M' -group by i_item_desc,w_warehouse_name,d1.d_week_seq -order by total_cnt desc, i_item_desc, w_warehouse_name, d_week_seq -limit 100; - - +SELECT + i_item_desc, + w_warehouse_name, + d1.d_week_seq, + sum(CASE WHEN p_promo_sk IS NULL THEN 1 ELSE 0 END) AS no_promo, + sum(CASE WHEN p_promo_sk IS NOT NULL THEN 1 ELSE 0 END) AS promo, + count(*) AS total_cnt +FROM catalog_sales +JOIN inventory ON (cs_item_sk = inv_item_sk) +JOIN warehouse ON (w_warehouse_sk = inv_warehouse_sk) +JOIN item ON (i_item_sk = cs_item_sk) +JOIN customer_demographics ON (cs_bill_cdemo_sk = cd_demo_sk) +JOIN household_demographics ON (cs_bill_hdemo_sk = hd_demo_sk) +JOIN date_dim d1 ON (cs_sold_date_sk = d1.d_date_sk) +JOIN date_dim d2 ON (inv_date_sk = d2.d_date_sk) +JOIN date_dim d3 ON (cs_ship_date_sk = d3.d_date_sk) +LEFT OUTER JOIN promotion ON (cs_promo_sk = p_promo_sk) +LEFT OUTER JOIN + catalog_returns ON (cr_item_sk = cs_item_sk AND cr_order_number = cs_order_number) +WHERE + d1.d_week_seq = d2.d_week_seq + AND inv_quantity_on_hand < cs_quantity + AND d3.d_date > (d1.d_date + INTERVAL '5 days') + AND hd_buy_potential = '>10000' + AND d1.d_year = 1999 + AND cd_marital_status = 'D' +GROUP BY i_item_desc, w_warehouse_name, d1.d_week_seq +ORDER BY total_cnt desc, i_item_desc, w_warehouse_name, d_week_seq +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/73.sql b/datafusion/core/tests/tpc-ds/73.sql index c103533e1f137..de3e568e6f0d1 100644 --- a/datafusion/core/tests/tpc-ds/73.sql +++ b/datafusion/core/tests/tpc-ds/73.sql @@ -1,29 +1,39 @@ --- Copyright 2015 Transaction Processing Performance Council - -select c_last_name - ,c_first_name - ,c_salutation - ,c_preferred_cust_flag - ,ss_ticket_number - ,cnt from - (select ss_ticket_number - ,ss_customer_sk - ,count(*) cnt - from store_sales,date_dim,store,household_demographics - where store_sales.ss_sold_date_sk = date_dim.d_date_sk - and store_sales.ss_store_sk = store.s_store_sk - and store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk - and date_dim.d_dom between 1 and 2 - and (household_demographics.hd_buy_potential = '>10000' or - household_demographics.hd_buy_potential = '5001-10000') - and household_demographics.hd_vehicle_count > 0 - and case when household_demographics.hd_vehicle_count > 0 then - household_demographics.hd_dep_count/ household_demographics.hd_vehicle_count else null end > 1 - and date_dim.d_year in (1999,1999+1,1999+2) - and store.s_county in ('Daviess County','Franklin Parish','Barrow County','Luce County') - group by ss_ticket_number,ss_customer_sk) dj,customer - where ss_customer_sk = c_customer_sk - and cnt between 1 and 5 - order by cnt desc, c_last_name asc; - - +SELECT c_last_name, + c_first_name, + c_salutation, + c_preferred_cust_flag, + ss_ticket_number, + cnt +FROM (SELECT ss_ticket_number, + ss_customer_sk, + count(*) cnt + FROM store_sales, + date_dim, + store, + household_demographics + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND date_dim.d_dom BETWEEN 1 AND 2 + AND ( + household_demographics.hd_buy_potential = '>10000' + OR household_demographics.hd_buy_potential = 'Unknown' + ) + AND household_demographics.hd_vehicle_count > 0 + AND CASE + WHEN household_demographics.hd_vehicle_count > 0 + THEN + household_demographics.hd_dep_count + / household_demographics.hd_vehicle_count + ELSE null + END + > 1 + AND date_dim.d_year IN (1999, 1999 + 1, 1999 + 2) + AND store.s_county + IN ('Williamson County', 'Franklin Parish', 'Bronx County', 'Orange County') + GROUP BY ss_ticket_number, ss_customer_sk) dj, + customer +WHERE ss_customer_sk = c_customer_sk + AND cnt BETWEEN 1 AND 5 +ORDER BY cnt desc, c_last_name asc +; diff --git a/datafusion/core/tests/tpc-ds/74.sql b/datafusion/core/tests/tpc-ds/74.sql index 9804f4dce1fa9..fb28d6522a6f7 100644 --- a/datafusion/core/tests/tpc-ds/74.sql +++ b/datafusion/core/tests/tpc-ds/74.sql @@ -1,62 +1,65 @@ --- Copyright 2015 Transaction Processing Performance Council - -with year_total as ( - select c_customer_id customer_id - ,c_first_name customer_first_name - ,c_last_name customer_last_name - ,d_year as year - ,max(ss_net_paid) year_total - ,'s' sale_type - from customer - ,store_sales - ,date_dim - where c_customer_sk = ss_customer_sk - and ss_sold_date_sk = d_date_sk - and d_year in (2001,2001+1) - group by c_customer_id - ,c_first_name - ,c_last_name - ,d_year - union all - select c_customer_id customer_id - ,c_first_name customer_first_name - ,c_last_name customer_last_name - ,d_year as year - ,max(ws_net_paid) year_total - ,'w' sale_type - from customer - ,web_sales - ,date_dim - where c_customer_sk = ws_bill_customer_sk - and ws_sold_date_sk = d_date_sk - and d_year in (2001,2001+1) - group by c_customer_id - ,c_first_name - ,c_last_name - ,d_year - ) - select - t_s_secyear.customer_id, t_s_secyear.customer_first_name, t_s_secyear.customer_last_name - from year_total t_s_firstyear - ,year_total t_s_secyear - ,year_total t_w_firstyear - ,year_total t_w_secyear - where t_s_secyear.customer_id = t_s_firstyear.customer_id - and t_s_firstyear.customer_id = t_w_secyear.customer_id - and t_s_firstyear.customer_id = t_w_firstyear.customer_id - and t_s_firstyear.sale_type = 's' - and t_w_firstyear.sale_type = 'w' - and t_s_secyear.sale_type = 's' - and t_w_secyear.sale_type = 'w' - and t_s_firstyear.year = 2001 - and t_s_secyear.year = 2001+1 - and t_w_firstyear.year = 2001 - and t_w_secyear.year = 2001+1 - and t_s_firstyear.year_total > 0 - and t_w_firstyear.year_total > 0 - and case when t_w_firstyear.year_total > 0 then t_w_secyear.year_total / t_w_firstyear.year_total else null end - > case when t_s_firstyear.year_total > 0 then t_s_secyear.year_total / t_s_firstyear.year_total else null end - order by 2,1,3 -limit 100; - - +WITH + year_total AS ( + SELECT + c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + d_year AS year, + sum(ss_net_paid) year_total, + 's' sale_type + FROM customer, store_sales, date_dim + WHERE + c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year IN (2001, 2001 + 1) + GROUP BY c_customer_id, c_first_name, c_last_name, d_year + UNION ALL + SELECT + c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + d_year AS year, + sum(ws_net_paid) year_total, + 'w' sale_type + FROM customer, web_sales, date_dim + WHERE + c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year IN (2001, 2001 + 1) + GROUP BY c_customer_id, c_first_name, c_last_name, d_year + ) +SELECT + t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name +FROM + year_total t_s_firstyear, + year_total t_s_secyear, + year_total t_w_firstyear, + year_total t_w_secyear +WHERE + t_s_secyear.customer_id = t_s_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_secyear.customer_id + AND t_s_firstyear.customer_id = t_w_firstyear.customer_id + AND t_s_firstyear.sale_type = 's' + AND t_w_firstyear.sale_type = 'w' + AND t_s_secyear.sale_type = 's' + AND t_w_secyear.sale_type = 'w' + AND t_s_firstyear.year = 2001 + AND t_s_secyear.year = 2001 + 1 + AND t_w_firstyear.year = 2001 + AND t_w_secyear.year = 2001 + 1 + AND t_s_firstyear.year_total > 0 + AND t_w_firstyear.year_total > 0 + AND CASE + WHEN t_w_firstyear.year_total > 0 + THEN t_w_secyear.year_total / t_w_firstyear.year_total + ELSE null + END > CASE + WHEN t_s_firstyear.year_total > 0 + THEN t_s_secyear.year_total / t_s_firstyear.year_total + ELSE null + END +ORDER BY 1, 1, 1 +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/75.sql b/datafusion/core/tests/tpc-ds/75.sql index 41bd965b9fced..cdeff26f8252f 100644 --- a/datafusion/core/tests/tpc-ds/75.sql +++ b/datafusion/core/tests/tpc-ds/75.sql @@ -1,71 +1,87 @@ --- Copyright 2015 Transaction Processing Performance Council - -WITH all_sales AS ( - SELECT d_year - ,i_brand_id - ,i_class_id - ,i_category_id - ,i_manufact_id - ,SUM(sales_cnt) AS sales_cnt - ,SUM(sales_amt) AS sales_amt - FROM (SELECT d_year - ,i_brand_id - ,i_class_id - ,i_category_id - ,i_manufact_id - ,cs_quantity - COALESCE(cr_return_quantity,0) AS sales_cnt - ,cs_ext_sales_price - COALESCE(cr_return_amount,0.0) AS sales_amt - FROM catalog_sales JOIN item ON i_item_sk=cs_item_sk - JOIN date_dim ON d_date_sk=cs_sold_date_sk - LEFT JOIN catalog_returns ON (cs_order_number=cr_order_number - AND cs_item_sk=cr_item_sk) - WHERE i_category='Sports' - UNION - SELECT d_year - ,i_brand_id - ,i_class_id - ,i_category_id - ,i_manufact_id - ,ss_quantity - COALESCE(sr_return_quantity,0) AS sales_cnt - ,ss_ext_sales_price - COALESCE(sr_return_amt,0.0) AS sales_amt - FROM store_sales JOIN item ON i_item_sk=ss_item_sk - JOIN date_dim ON d_date_sk=ss_sold_date_sk - LEFT JOIN store_returns ON (ss_ticket_number=sr_ticket_number - AND ss_item_sk=sr_item_sk) - WHERE i_category='Sports' - UNION - SELECT d_year - ,i_brand_id - ,i_class_id - ,i_category_id - ,i_manufact_id - ,ws_quantity - COALESCE(wr_return_quantity,0) AS sales_cnt - ,ws_ext_sales_price - COALESCE(wr_return_amt,0.0) AS sales_amt - FROM web_sales JOIN item ON i_item_sk=ws_item_sk - JOIN date_dim ON d_date_sk=ws_sold_date_sk - LEFT JOIN web_returns ON (ws_order_number=wr_order_number - AND ws_item_sk=wr_item_sk) - WHERE i_category='Sports') sales_detail - GROUP BY d_year, i_brand_id, i_class_id, i_category_id, i_manufact_id) - SELECT prev_yr.d_year AS prev_year - ,curr_yr.d_year AS year - ,curr_yr.i_brand_id - ,curr_yr.i_class_id - ,curr_yr.i_category_id - ,curr_yr.i_manufact_id - ,prev_yr.sales_cnt AS prev_yr_cnt - ,curr_yr.sales_cnt AS curr_yr_cnt - ,curr_yr.sales_cnt-prev_yr.sales_cnt AS sales_cnt_diff - ,curr_yr.sales_amt-prev_yr.sales_amt AS sales_amt_diff - FROM all_sales curr_yr, all_sales prev_yr - WHERE curr_yr.i_brand_id=prev_yr.i_brand_id - AND curr_yr.i_class_id=prev_yr.i_class_id - AND curr_yr.i_category_id=prev_yr.i_category_id - AND curr_yr.i_manufact_id=prev_yr.i_manufact_id - AND curr_yr.d_year=2002 - AND prev_yr.d_year=2002-1 - AND CAST(curr_yr.sales_cnt AS DECIMAL(17,2))/CAST(prev_yr.sales_cnt AS DECIMAL(17,2))<0.9 - ORDER BY sales_cnt_diff,sales_amt_diff - limit 100; - - +WITH + all_sales AS ( + SELECT + d_year, + i_brand_id, + i_class_id, + i_category_id, + i_manufact_id, + sum(sales_cnt) AS sales_cnt, + sum(sales_amt) AS sales_amt + FROM + ( + SELECT + d_year, + i_brand_id, + i_class_id, + i_category_id, + i_manufact_id, + cs_quantity - coalesce(cr_return_quantity, 0) AS sales_cnt, + cs_ext_sales_price - coalesce(cr_return_amount, 0.0) AS sales_amt + FROM catalog_sales + JOIN item ON i_item_sk = cs_item_sk + JOIN date_dim ON d_date_sk = cs_sold_date_sk + LEFT JOIN + catalog_returns + ON (cs_order_number = cr_order_number AND cs_item_sk = cr_item_sk) + WHERE i_category = 'Books' + union + SELECT + d_year, + i_brand_id, + i_class_id, + i_category_id, + i_manufact_id, + ss_quantity - coalesce(sr_return_quantity, 0) AS sales_cnt, + ss_ext_sales_price - coalesce(sr_return_amt, 0.0) AS sales_amt + FROM store_sales + JOIN item ON i_item_sk = ss_item_sk + JOIN date_dim ON d_date_sk = ss_sold_date_sk + LEFT JOIN + store_returns + ON (ss_ticket_number = sr_ticket_number AND ss_item_sk = sr_item_sk) + WHERE i_category = 'Books' + union + SELECT + d_year, + i_brand_id, + i_class_id, + i_category_id, + i_manufact_id, + ws_quantity - coalesce(wr_return_quantity, 0) AS sales_cnt, + ws_ext_sales_price - coalesce(wr_return_amt, 0.0) AS sales_amt + FROM web_sales + JOIN item ON i_item_sk = ws_item_sk + JOIN date_dim ON d_date_sk = ws_sold_date_sk + LEFT JOIN + web_returns + ON (ws_order_number = wr_order_number AND ws_item_sk = wr_item_sk) + WHERE i_category = 'Books' + ) sales_detail + GROUP BY d_year, i_brand_id, i_class_id, i_category_id, i_manufact_id + ) +SELECT + prev_yr.d_year AS prev_year, + curr_yr.d_year AS year, + curr_yr.i_brand_id, + curr_yr.i_class_id, + curr_yr.i_category_id, + curr_yr.i_manufact_id, + prev_yr.sales_cnt AS prev_yr_cnt, + curr_yr.sales_cnt AS curr_yr_cnt, + curr_yr.sales_cnt - prev_yr.sales_cnt AS sales_cnt_diff, + curr_yr.sales_amt - prev_yr.sales_amt AS sales_amt_diff +FROM all_sales curr_yr, all_sales prev_yr +WHERE + curr_yr.i_brand_id = prev_yr.i_brand_id + AND curr_yr.i_class_id = prev_yr.i_class_id + AND curr_yr.i_category_id = prev_yr.i_category_id + AND curr_yr.i_manufact_id = prev_yr.i_manufact_id + AND curr_yr.d_year = 2002 + AND prev_yr.d_year = 2002 - 1 + AND cast(curr_yr.sales_cnt AS decimal(17, 2)) + / cast(prev_yr.sales_cnt AS decimal(17, 2)) + < 0.9 +ORDER BY sales_cnt_diff +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/76.sql b/datafusion/core/tests/tpc-ds/76.sql index 8743a3ebc2ab0..1565eb0ec8e7c 100644 --- a/datafusion/core/tests/tpc-ds/76.sql +++ b/datafusion/core/tests/tpc-ds/76.sql @@ -1,25 +1,53 @@ --- Copyright 2015 Transaction Processing Performance Council - -select channel, col_name, d_year, d_qoy, i_category, COUNT(*) sales_cnt, SUM(ext_sales_price) sales_amt FROM ( - SELECT 'store' as channel, 'ss_addr_sk' col_name, d_year, d_qoy, i_category, ss_ext_sales_price ext_sales_price - FROM store_sales, item, date_dim - WHERE ss_addr_sk IS NULL - AND ss_sold_date_sk=d_date_sk - AND ss_item_sk=i_item_sk +SELECT + channel, + col_name, + d_year, + d_qoy, + i_category, + count(*) sales_cnt, + sum(ext_sales_price) sales_amt +FROM + ( + SELECT + 'store' AS channel, + 'ss_addr_sk' col_name, + d_year, + d_qoy, + i_category, + ss_ext_sales_price ext_sales_price + FROM store_sales, item, date_dim + WHERE + ss_addr_sk IS NULL + AND ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk UNION ALL - SELECT 'web' as channel, 'ws_web_page_sk' col_name, d_year, d_qoy, i_category, ws_ext_sales_price ext_sales_price - FROM web_sales, item, date_dim - WHERE ws_web_page_sk IS NULL - AND ws_sold_date_sk=d_date_sk - AND ws_item_sk=i_item_sk + SELECT + 'web' AS channel, + 'ws_web_page_sk' col_name, + d_year, + d_qoy, + i_category, + ws_ext_sales_price ext_sales_price + FROM web_sales, item, date_dim + WHERE + ws_web_page_sk IS NULL + AND ws_sold_date_sk = d_date_sk + AND ws_item_sk = i_item_sk UNION ALL - SELECT 'catalog' as channel, 'cs_warehouse_sk' col_name, d_year, d_qoy, i_category, cs_ext_sales_price ext_sales_price - FROM catalog_sales, item, date_dim - WHERE cs_warehouse_sk IS NULL - AND cs_sold_date_sk=d_date_sk - AND cs_item_sk=i_item_sk) foo + SELECT + 'catalog' AS channel, + 'cs_warehouse_sk' col_name, + d_year, + d_qoy, + i_category, + cs_ext_sales_price ext_sales_price + FROM catalog_sales, item, date_dim + WHERE + cs_warehouse_sk IS NULL + AND cs_sold_date_sk = d_date_sk + AND cs_item_sk = i_item_sk + ) foo GROUP BY channel, col_name, d_year, d_qoy, i_category ORDER BY channel, col_name, d_year, d_qoy, i_category -limit 100; - - +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/77.sql b/datafusion/core/tests/tpc-ds/77.sql index 152a945faa326..930c94c66dc3c 100644 --- a/datafusion/core/tests/tpc-ds/77.sql +++ b/datafusion/core/tests/tpc-ds/77.sql @@ -1,109 +1,112 @@ --- Copyright 2015 Transaction Processing Performance Council - -with ss as - (select s_store_sk, - sum(ss_ext_sales_price) as sales, - sum(ss_net_profit) as profit - from store_sales, - date_dim, - store - where ss_sold_date_sk = d_date_sk - and d_date between cast('1998-08-04' as date) - and (cast('1998-08-04' as date) + INTERVAL '30 days') - and ss_store_sk = s_store_sk - group by s_store_sk) - , - sr as - (select s_store_sk, - sum(sr_return_amt) as returns, - sum(sr_net_loss) as profit_loss - from store_returns, - date_dim, - store - where sr_returned_date_sk = d_date_sk - and d_date between cast('1998-08-04' as date) - and (cast('1998-08-04' as date) + INTERVAL '30 days') - and sr_store_sk = s_store_sk - group by s_store_sk), - cs as - (select cs_call_center_sk, - sum(cs_ext_sales_price) as sales, - sum(cs_net_profit) as profit - from catalog_sales, - date_dim - where cs_sold_date_sk = d_date_sk - and d_date between cast('1998-08-04' as date) - and (cast('1998-08-04' as date) + INTERVAL '30 days') - group by cs_call_center_sk - ), - cr as - (select cr_call_center_sk, - sum(cr_return_amount) as returns, - sum(cr_net_loss) as profit_loss - from catalog_returns, - date_dim - where cr_returned_date_sk = d_date_sk - and d_date between cast('1998-08-04' as date) - and (cast('1998-08-04' as date) + INTERVAL '30 days') - group by cr_call_center_sk - ), - ws as - ( select wp_web_page_sk, - sum(ws_ext_sales_price) as sales, - sum(ws_net_profit) as profit - from web_sales, - date_dim, - web_page - where ws_sold_date_sk = d_date_sk - and d_date between cast('1998-08-04' as date) - and (cast('1998-08-04' as date) + INTERVAL '30 days') - and ws_web_page_sk = wp_web_page_sk - group by wp_web_page_sk), - wr as - (select wp_web_page_sk, - sum(wr_return_amt) as returns, - sum(wr_net_loss) as profit_loss - from web_returns, - date_dim, - web_page - where wr_returned_date_sk = d_date_sk - and d_date between cast('1998-08-04' as date) - and (cast('1998-08-04' as date) + INTERVAL '30 days') - and wr_web_page_sk = wp_web_page_sk - group by wp_web_page_sk) - select channel - , id - , sum(sales) as sales - , sum(returns) as returns - , sum(profit) as profit - from - (select 'store channel' as channel - , ss.s_store_sk as id - , sales - , coalesce(returns, 0) as returns - , (profit - coalesce(profit_loss,0)) as profit - from ss left join sr - on ss.s_store_sk = sr.s_store_sk - union all - select 'catalog channel' as channel - , cs_call_center_sk as id - , sales - , returns - , (profit - profit_loss) as profit - from cs - , cr - union all - select 'web channel' as channel - , ws.wp_web_page_sk as id - , sales - , coalesce(returns, 0) returns - , (profit - coalesce(profit_loss,0)) as profit - from ws left join wr - on ws.wp_web_page_sk = wr.wp_web_page_sk - ) x - group by rollup (channel, id) - order by channel - ,id - limit 100; - - +WITH + ss AS ( + SELECT + s_store_sk, sum(ss_ext_sales_price) AS sales, sum(ss_net_profit) AS profit + FROM store_sales, date_dim, store + WHERE + ss_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND ( + cast('2000-08-23' AS date) + INTERVAL '30 days' + ) + AND ss_store_sk = s_store_sk + GROUP BY s_store_sk + ), + sr AS ( + SELECT + s_store_sk, sum(sr_return_amt) AS returns, sum(sr_net_loss) AS profit_loss + FROM store_returns, date_dim, store + WHERE + sr_returned_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND ( + cast('2000-08-23' AS date) + INTERVAL '30 days' + ) + AND sr_store_sk = s_store_sk + GROUP BY s_store_sk + ), + cs AS ( + SELECT + cs_call_center_sk, + sum(cs_ext_sales_price) AS sales, + sum(cs_net_profit) AS profit + FROM catalog_sales, date_dim + WHERE + cs_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND ( + cast('2000-08-23' AS date) + INTERVAL '30 days' + ) + GROUP BY cs_call_center_sk + ), + cr AS ( + SELECT + cr_call_center_sk, + sum(cr_return_amount) AS returns, + sum(cr_net_loss) AS profit_loss + FROM catalog_returns, date_dim + WHERE + cr_returned_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND ( + cast('2000-08-23' AS date) + INTERVAL '30 days' + ) + GROUP BY cr_call_center_sk + ), + ws AS ( + SELECT + wp_web_page_sk, + sum(ws_ext_sales_price) AS sales, + sum(ws_net_profit) AS profit + FROM web_sales, date_dim, web_page + WHERE + ws_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND ( + cast('2000-08-23' AS date) + INTERVAL '30 days' + ) + AND ws_web_page_sk = wp_web_page_sk + GROUP BY wp_web_page_sk + ), + wr AS ( + SELECT + wp_web_page_sk, + sum(wr_return_amt) AS returns, + sum(wr_net_loss) AS profit_loss + FROM web_returns, date_dim, web_page + WHERE + wr_returned_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND ( + cast('2000-08-23' AS date) + INTERVAL '30 days' + ) + AND wr_web_page_sk = wp_web_page_sk + GROUP BY wp_web_page_sk + ) +SELECT channel, id, sum(sales) AS sales, sum(returns) AS returns, sum(profit) AS profit +FROM + ( + SELECT + 'store channel' AS channel, + ss.s_store_sk AS id, + sales, + coalesce(returns, 0) AS returns, + (profit - coalesce(profit_loss, 0)) AS profit + FROM ss + LEFT JOIN sr ON ss.s_store_sk = sr.s_store_sk + UNION ALL + SELECT + 'catalog channel' AS channel, + cs_call_center_sk AS id, + sales, + returns, + (profit - profit_loss) AS profit + FROM cs, cr + UNION ALL + SELECT + 'web channel' AS channel, + ws.wp_web_page_sk AS id, + sales, + coalesce(returns, 0) returns, + (profit - coalesce(profit_loss, 0)) AS profit + FROM ws + LEFT JOIN wr ON ws.wp_web_page_sk = wr.wp_web_page_sk + ) x +GROUP BY rollup (channel, id) +ORDER BY channel, id +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/78.sql b/datafusion/core/tests/tpc-ds/78.sql index adc78aa09ad0d..b04c2f20350df 100644 --- a/datafusion/core/tests/tpc-ds/78.sql +++ b/datafusion/core/tests/tpc-ds/78.sql @@ -1,59 +1,90 @@ --- Copyright 2015 Transaction Processing Performance Council - -with ws as - (select d_year AS ws_sold_year, ws_item_sk, - ws_bill_customer_sk ws_customer_sk, - sum(ws_quantity) ws_qty, - sum(ws_wholesale_cost) ws_wc, - sum(ws_sales_price) ws_sp - from web_sales - left join web_returns on wr_order_number=ws_order_number and ws_item_sk=wr_item_sk - join date_dim on ws_sold_date_sk = d_date_sk - where wr_order_number is null - group by d_year, ws_item_sk, ws_bill_customer_sk - ), -cs as - (select d_year AS cs_sold_year, cs_item_sk, - cs_bill_customer_sk cs_customer_sk, - sum(cs_quantity) cs_qty, - sum(cs_wholesale_cost) cs_wc, - sum(cs_sales_price) cs_sp - from catalog_sales - left join catalog_returns on cr_order_number=cs_order_number and cs_item_sk=cr_item_sk - join date_dim on cs_sold_date_sk = d_date_sk - where cr_order_number is null - group by d_year, cs_item_sk, cs_bill_customer_sk - ), -ss as - (select d_year AS ss_sold_year, ss_item_sk, +WITH + ws AS ( + SELECT + d_year AS ws_sold_year, + ws_item_sk, + ws_bill_customer_sk ws_customer_sk, + sum(ws_quantity) ws_qty, + sum(ws_wholesale_cost) ws_wc, + sum(ws_sales_price) ws_sp + FROM web_sales + LEFT JOIN + web_returns ON wr_order_number = ws_order_number AND ws_item_sk = wr_item_sk + JOIN date_dim ON ws_sold_date_sk = d_date_sk + WHERE wr_order_number IS NULL + GROUP BY d_year, ws_item_sk, ws_bill_customer_sk + ), + cs AS ( + SELECT + d_year AS cs_sold_year, + cs_item_sk, + cs_bill_customer_sk cs_customer_sk, + sum(cs_quantity) cs_qty, + sum(cs_wholesale_cost) cs_wc, + sum(cs_sales_price) cs_sp + FROM catalog_sales + LEFT JOIN + catalog_returns + ON cr_order_number = cs_order_number + AND cs_item_sk = cr_item_sk + JOIN date_dim ON cs_sold_date_sk = d_date_sk + WHERE cr_order_number IS NULL + GROUP BY d_year, cs_item_sk, cs_bill_customer_sk + ), + ss AS ( + SELECT + d_year AS ss_sold_year, + ss_item_sk, + ss_customer_sk, + sum(ss_quantity) ss_qty, + sum(ss_wholesale_cost) ss_wc, + sum(ss_sales_price) ss_sp + FROM store_sales + LEFT JOIN + store_returns + ON sr_ticket_number = ss_ticket_number + AND ss_item_sk = sr_item_sk + JOIN date_dim ON ss_sold_date_sk = d_date_sk + WHERE sr_ticket_number IS NULL + GROUP BY d_year, ss_item_sk, ss_customer_sk + ) +SELECT + ss_sold_year, + ss_item_sk, ss_customer_sk, - sum(ss_quantity) ss_qty, - sum(ss_wholesale_cost) ss_wc, - sum(ss_sales_price) ss_sp - from store_sales - left join store_returns on sr_ticket_number=ss_ticket_number and ss_item_sk=sr_item_sk - join date_dim on ss_sold_date_sk = d_date_sk - where sr_ticket_number is null - group by d_year, ss_item_sk, ss_customer_sk - ) - select -ss_sold_year, ss_item_sk, ss_customer_sk, -round(ss_qty/(coalesce(ws_qty,0)+coalesce(cs_qty,0)),2) ratio, -ss_qty store_qty, ss_wc store_wholesale_cost, ss_sp store_sales_price, -coalesce(ws_qty,0)+coalesce(cs_qty,0) other_chan_qty, -coalesce(ws_wc,0)+coalesce(cs_wc,0) other_chan_wholesale_cost, -coalesce(ws_sp,0)+coalesce(cs_sp,0) other_chan_sales_price -from ss -left join ws on (ws_sold_year=ss_sold_year and ws_item_sk=ss_item_sk and ws_customer_sk=ss_customer_sk) -left join cs on (cs_sold_year=ss_sold_year and cs_item_sk=ss_item_sk and cs_customer_sk=ss_customer_sk) -where (coalesce(ws_qty,0)>0 or coalesce(cs_qty, 0)>0) and ss_sold_year=2000 -order by - ss_sold_year, ss_item_sk, ss_customer_sk, - ss_qty desc, ss_wc desc, ss_sp desc, - other_chan_qty, - other_chan_wholesale_cost, - other_chan_sales_price, - ratio -limit 100; - - + round(ss_qty / (coalesce(ws_qty, 0) + coalesce(cs_qty, 0)), 2) ratio, + ss_qty store_qty, + ss_wc store_wholesale_cost, + ss_sp store_sales_price, + coalesce(ws_qty, 0) + coalesce(cs_qty, 0) other_chan_qty, + coalesce(ws_wc, 0) + coalesce(cs_wc, 0) other_chan_wholesale_cost, + coalesce(ws_sp, 0) + coalesce(cs_sp, 0) other_chan_sales_price +FROM ss +LEFT JOIN + ws + ON ( + ws_sold_year = ss_sold_year + AND ws_item_sk = ss_item_sk + AND ws_customer_sk = ss_customer_sk + ) +LEFT JOIN + cs + ON ( + cs_sold_year = ss_sold_year + AND cs_item_sk = ss_item_sk + AND cs_customer_sk = ss_customer_sk + ) +WHERE (coalesce(ws_qty, 0) > 0 OR coalesce(cs_qty, 0) > 0) AND ss_sold_year = 2000 +ORDER BY + ss_sold_year, + ss_item_sk, + ss_customer_sk, + ss_qty desc, + ss_wc desc, + ss_sp desc, + other_chan_qty, + other_chan_wholesale_cost, + other_chan_sales_price, + round(ss_qty / (coalesce(ws_qty + cs_qty, 1)), 2) +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/79.sql b/datafusion/core/tests/tpc-ds/79.sql index d0567eff43d01..9f8a312da495f 100644 --- a/datafusion/core/tests/tpc-ds/79.sql +++ b/datafusion/core/tests/tpc-ds/79.sql @@ -1,24 +1,28 @@ --- Copyright 2015 Transaction Processing Performance Council - -select - c_last_name,c_first_name,substr(s_city,1,30),ss_ticket_number,amt,profit - from - (select ss_ticket_number - ,ss_customer_sk - ,store.s_city - ,sum(ss_coupon_amt) amt - ,sum(ss_net_profit) profit - from store_sales,date_dim,store,household_demographics - where store_sales.ss_sold_date_sk = date_dim.d_date_sk - and store_sales.ss_store_sk = store.s_store_sk - and store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk - and (household_demographics.hd_dep_count = 8 or household_demographics.hd_vehicle_count > 0) - and date_dim.d_dow = 1 - and date_dim.d_year in (1998,1998+1,1998+2) - and store.s_number_employees between 200 and 295 - group by ss_ticket_number,ss_customer_sk,ss_addr_sk,store.s_city) ms,customer - where ss_customer_sk = c_customer_sk - order by c_last_name,c_first_name,substr(s_city,1,30), profit -limit 100; - - +SELECT c_last_name, c_first_name, substr(s_city, 1, 30), ss_ticket_number, amt, profit +FROM + ( + SELECT + ss_ticket_number, + ss_customer_sk, + store.s_city, + sum(ss_coupon_amt) amt, + sum(ss_net_profit) profit + FROM store_sales, date_dim, store, household_demographics + WHERE + store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND ( + household_demographics.hd_dep_count = 6 + OR household_demographics.hd_vehicle_count > 2 + ) + AND date_dim.d_dow = 1 + AND date_dim.d_year IN (1999, 1999 + 1, 1999 + 2) + AND store.s_number_employees BETWEEN 200 AND 295 + GROUP BY ss_ticket_number, ss_customer_sk, ss_addr_sk, store.s_city + ) ms, + customer +WHERE ss_customer_sk = c_customer_sk +ORDER BY c_last_name, c_first_name, substr(s_city, 1, 30), profit +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/8.sql b/datafusion/core/tests/tpc-ds/8.sql index c831ed9fdf8dc..1f19dcb381ebe 100644 --- a/datafusion/core/tests/tpc-ds/8.sql +++ b/datafusion/core/tests/tpc-ds/8.sql @@ -1,109 +1,438 @@ --- Copyright 2015 Transaction Processing Performance Council - -select s_store_name - ,sum(ss_net_profit) - from store_sales - ,date_dim - ,store, - (select ca_zip - from ( - SELECT substr(ca_zip,1,5) ca_zip - FROM customer_address - WHERE substr(ca_zip,1,5) IN ( - '89436','30868','65085','22977','83927','77557', - '58429','40697','80614','10502','32779', - '91137','61265','98294','17921','18427', - '21203','59362','87291','84093','21505', - '17184','10866','67898','25797','28055', - '18377','80332','74535','21757','29742', - '90885','29898','17819','40811','25990', - '47513','89531','91068','10391','18846', - '99223','82637','41368','83658','86199', - '81625','26696','89338','88425','32200', - '81427','19053','77471','36610','99823', - '43276','41249','48584','83550','82276', - '18842','78890','14090','38123','40936', - '34425','19850','43286','80072','79188', - '54191','11395','50497','84861','90733', - '21068','57666','37119','25004','57835', - '70067','62878','95806','19303','18840', - '19124','29785','16737','16022','49613', - '89977','68310','60069','98360','48649', - '39050','41793','25002','27413','39736', - '47208','16515','94808','57648','15009', - '80015','42961','63982','21744','71853', - '81087','67468','34175','64008','20261', - '11201','51799','48043','45645','61163', - '48375','36447','57042','21218','41100', - '89951','22745','35851','83326','61125', - '78298','80752','49858','52940','96976', - '63792','11376','53582','18717','90226', - '50530','94203','99447','27670','96577', - '57856','56372','16165','23427','54561', - '28806','44439','22926','30123','61451', - '92397','56979','92309','70873','13355', - '21801','46346','37562','56458','28286', - '47306','99555','69399','26234','47546', - '49661','88601','35943','39936','25632', - '24611','44166','56648','30379','59785', - '11110','14329','93815','52226','71381', - '13842','25612','63294','14664','21077', - '82626','18799','60915','81020','56447', - '76619','11433','13414','42548','92713', - '70467','30884','47484','16072','38936', - '13036','88376','45539','35901','19506', - '65690','73957','71850','49231','14276', - '20005','18384','76615','11635','38177', - '55607','41369','95447','58581','58149', - '91946','33790','76232','75692','95464', - '22246','51061','56692','53121','77209', - '15482','10688','14868','45907','73520', - '72666','25734','17959','24677','66446', - '94627','53535','15560','41967','69297', - '11929','59403','33283','52232','57350', - '43933','40921','36635','10827','71286', - '19736','80619','25251','95042','15526', - '36496','55854','49124','81980','35375', - '49157','63512','28944','14946','36503', - '54010','18767','23969','43905','66979', - '33113','21286','58471','59080','13395', - '79144','70373','67031','38360','26705', - '50906','52406','26066','73146','15884', - '31897','30045','61068','45550','92454', - '13376','14354','19770','22928','97790', - '50723','46081','30202','14410','20223', - '88500','67298','13261','14172','81410', - '93578','83583','46047','94167','82564', - '21156','15799','86709','37931','74703', - '83103','23054','70470','72008','49247', - '91911','69998','20961','70070','63197', - '54853','88191','91830','49521','19454', - '81450','89091','62378','25683','61869', - '51744','36580','85778','36871','48121', - '28810','83712','45486','67393','26935', - '42393','20132','55349','86057','21309', - '80218','10094','11357','48819','39734', - '40758','30432','21204','29467','30214', - '61024','55307','74621','11622','68908', - '33032','52868','99194','99900','84936', - '69036','99149','45013','32895','59004', - '32322','14933','32936','33562','72550', - '27385','58049','58200','16808','21360', - '32961','18586','79307','15492') - intersect - select ca_zip - from (SELECT substr(ca_zip,1,5) ca_zip,count(*) cnt - FROM customer_address, customer - WHERE ca_address_sk = c_current_addr_sk and - c_preferred_cust_flag='Y' - group by ca_zip - having count(*) > 10)A1)A2) V1 - where ss_store_sk = s_store_sk - and ss_sold_date_sk = d_date_sk - and d_qoy = 1 and d_year = 2002 - and (substr(s_zip,1,2) = substr(V1.ca_zip,1,2)) - group by s_store_name - order by s_store_name - limit 100; - - +SELECT s_store_name, sum(ss_net_profit) +FROM + store_sales, + date_dim, + store, + ( + SELECT ca_zip + FROM + ( + SELECT substr(ca_zip, 1, 5) ca_zip + FROM customer_address + WHERE + substr(ca_zip, 1, 5) IN ( + '24128', + '76232', + '65084', + '87816', + '83926', + '77556', + '20548', + '26231', + '43848', + '15126', + '91137', + '61265', + '98294', + '25782', + '17920', + '18426', + '98235', + '40081', + '84093', + '28577', + '55565', + '17183', + '54601', + '67897', + '22752', + '86284', + '18376', + '38607', + '45200', + '21756', + '29741', + '96765', + '23932', + '89360', + '29839', + '25989', + '28898', + '91068', + '72550', + '10390', + '18845', + '47770', + '82636', + '41367', + '76638', + '86198', + '81312', + '37126', + '39192', + '88424', + '72175', + '81426', + '53672', + '10445', + '42666', + '66864', + '66708', + '41248', + '48583', + '82276', + '18842', + '78890', + '49448', + '14089', + '38122', + '34425', + '79077', + '19849', + '43285', + '39861', + '66162', + '77610', + '13695', + '99543', + '83444', + '83041', + '12305', + '57665', + '68341', + '25003', + '57834', + '62878', + '49130', + '81096', + '18840', + '27700', + '23470', + '50412', + '21195', + '16021', + '76107', + '71954', + '68309', + '18119', + '98359', + '64544', + '10336', + '86379', + '27068', + '39736', + '98569', + '28915', + '24206', + '56529', + '57647', + '54917', + '42961', + '91110', + '63981', + '14922', + '36420', + '23006', + '67467', + '32754', + '30903', + '20260', + '31671', + '51798', + '72325', + '85816', + '68621', + '13955', + '36446', + '41766', + '68806', + '16725', + '15146', + '22744', + '35850', + '88086', + '51649', + '18270', + '52867', + '39972', + '96976', + '63792', + '11376', + '94898', + '13595', + '10516', + '90225', + '58943', + '39371', + '94945', + '28587', + '96576', + '57855', + '28488', + '26105', + '83933', + '25858', + '34322', + '44438', + '73171', + '30122', + '34102', + '22685', + '71256', + '78451', + '54364', + '13354', + '45375', + '40558', + '56458', + '28286', + '45266', + '47305', + '69399', + '83921', + '26233', + '11101', + '15371', + '69913', + '35942', + '15882', + '25631', + '24610', + '44165', + '99076', + '33786', + '70738', + '26653', + '14328', + '72305', + '62496', + '22152', + '10144', + '64147', + '48425', + '14663', + '21076', + '18799', + '30450', + '63089', + '81019', + '68893', + '24996', + '51200', + '51211', + '45692', + '92712', + '70466', + '79994', + '22437', + '25280', + '38935', + '71791', + '73134', + '56571', + '14060', + '19505', + '72425', + '56575', + '74351', + '68786', + '51650', + '20004', + '18383', + '76614', + '11634', + '18906', + '15765', + '41368', + '73241', + '76698', + '78567', + '97189', + '28545', + '76231', + '75691', + '22246', + '51061', + '90578', + '56691', + '68014', + '51103', + '94167', + '57047', + '14867', + '73520', + '15734', + '63435', + '25733', + '35474', + '24676', + '94627', + '53535', + '17879', + '15559', + '53268', + '59166', + '11928', + '59402', + '33282', + '45721', + '43933', + '68101', + '33515', + '36634', + '71286', + '19736', + '58058', + '55253', + '67473', + '41918', + '19515', + '36495', + '19430', + '22351', + '77191', + '91393', + '49156', + '50298', + '87501', + '18652', + '53179', + '18767', + '63193', + '23968', + '65164', + '68880', + '21286', + '72823', + '58470', + '67301', + '13394', + '31016', + '70372', + '67030', + '40604', + '24317', + '45748', + '39127', + '26065', + '77721', + '31029', + '31880', + '60576', + '24671', + '45549', + '13376', + '50016', + '33123', + '19769', + '22927', + '97789', + '46081', + '72151', + '15723', + '46136', + '51949', + '68100', + '96888', + '64528', + '14171', + '79777', + '28709', + '11489', + '25103', + '32213', + '78668', + '22245', + '15798', + '27156', + '37930', + '62971', + '21337', + '51622', + '67853', + '10567', + '38415', + '15455', + '58263', + '42029', + '60279', + '37125', + '56240', + '88190', + '50308', + '26859', + '64457', + '89091', + '82136', + '62377', + '36233', + '63837', + '58078', + '17043', + '30010', + '60099', + '28810', + '98025', + '29178', + '87343', + '73273', + '30469', + '64034', + '39516', + '86057', + '21309', + '90257', + '67875', + '40162', + '11356', + '73650', + '61810', + '72013', + '30431', + '22461', + '19512', + '13375', + '55307', + '30625', + '83849', + '68908', + '26689', + '96451', + '38193', + '46820', + '88885', + '84935', + '69035', + '83144', + '47537', + '56616', + '94983', + '48033', + '69952', + '25486', + '61547', + '27385', + '61860', + '58048', + '56910', + '16807', + '17871', + '35258', + '31387', + '35458', + '35576' + ) + intersect + SELECT ca_zip + FROM + ( + SELECT substr(ca_zip, 1, 5) ca_zip, count(*) cnt + FROM customer_address, customer + WHERE + ca_address_sk = c_current_addr_sk + AND c_preferred_cust_flag = 'Y' + GROUP BY ca_zip + HAVING count(*) > 10 + ) a1 + ) a2 + ) v1 +WHERE + ss_store_sk = s_store_sk + AND ss_sold_date_sk = d_date_sk + AND d_qoy = 2 + AND d_year = 1998 + AND (substr(s_zip, 1, 2) = substr(v1.ca_zip, 1, 2)) +GROUP BY s_store_name +ORDER BY s_store_name +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/80.sql b/datafusion/core/tests/tpc-ds/80.sql index 230e5d34fb972..878bf528f407f 100644 --- a/datafusion/core/tests/tpc-ds/80.sql +++ b/datafusion/core/tests/tpc-ds/80.sql @@ -1,97 +1,110 @@ --- Copyright 2015 Transaction Processing Performance Council - -with ssr as - (select s_store_id as store_id, - sum(ss_ext_sales_price) as sales, - sum(coalesce(sr_return_amt, 0)) as returns, - sum(ss_net_profit - coalesce(sr_net_loss, 0)) as profit - from store_sales left outer join store_returns on - (ss_item_sk = sr_item_sk and ss_ticket_number = sr_ticket_number), - date_dim, - store, - item, - promotion - where ss_sold_date_sk = d_date_sk - and d_date between cast('1998-08-04' as date) - and (cast('1998-08-04' as date) + INTERVAL '30 days') - and ss_store_sk = s_store_sk - and ss_item_sk = i_item_sk - and i_current_price > 50 - and ss_promo_sk = p_promo_sk - and p_channel_tv = 'N' - group by s_store_id) - , - csr as - (select cp_catalog_page_id as catalog_page_id, - sum(cs_ext_sales_price) as sales, - sum(coalesce(cr_return_amount, 0)) as returns, - sum(cs_net_profit - coalesce(cr_net_loss, 0)) as profit - from catalog_sales left outer join catalog_returns on - (cs_item_sk = cr_item_sk and cs_order_number = cr_order_number), - date_dim, - catalog_page, - item, - promotion - where cs_sold_date_sk = d_date_sk - and d_date between cast('1998-08-04' as date) - and (cast('1998-08-04' as date) + INTERVAL '30 days') - and cs_catalog_page_sk = cp_catalog_page_sk - and cs_item_sk = i_item_sk - and i_current_price > 50 - and cs_promo_sk = p_promo_sk - and p_channel_tv = 'N' -group by cp_catalog_page_id) - , - wsr as - (select web_site_id, - sum(ws_ext_sales_price) as sales, - sum(coalesce(wr_return_amt, 0)) as returns, - sum(ws_net_profit - coalesce(wr_net_loss, 0)) as profit - from web_sales left outer join web_returns on - (ws_item_sk = wr_item_sk and ws_order_number = wr_order_number), - date_dim, - web_site, - item, - promotion - where ws_sold_date_sk = d_date_sk - and d_date between cast('1998-08-04' as date) - and (cast('1998-08-04' as date) + INTERVAL '30 days') - and ws_web_site_sk = web_site_sk - and ws_item_sk = i_item_sk - and i_current_price > 50 - and ws_promo_sk = p_promo_sk - and p_channel_tv = 'N' -group by web_site_id) - select channel - , id - , sum(sales) as sales - , sum(returns) as returns - , sum(profit) as profit - from - (select 'store channel' as channel - , 'store' || store_id as id - , sales - , returns - , profit - from ssr - union all - select 'catalog channel' as channel - , 'catalog_page' || catalog_page_id as id - , sales - , returns - , profit - from csr - union all - select 'web channel' as channel - , 'web_site' || web_site_id as id - , sales - , returns - , profit - from wsr - ) x - group by rollup (channel, id) - order by channel - ,id - limit 100; - - +WITH + ssr AS ( + SELECT + s_store_id AS store_id, + sum(ss_ext_sales_price) AS sales, + sum(coalesce(sr_return_amt, 0)) AS returns, + sum(ss_net_profit - coalesce(sr_net_loss, 0)) AS profit + FROM store_sales + LEFT OUTER JOIN + store_returns + ON (ss_item_sk = sr_item_sk AND ss_ticket_number = sr_ticket_number), + date_dim, + store, + item, + promotion + WHERE + ss_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND ( + cast('2000-08-23' AS date) + INTERVAL '30 days' + ) + AND ss_store_sk = s_store_sk + AND ss_item_sk = i_item_sk + AND i_current_price > 50 + AND ss_promo_sk = p_promo_sk + AND p_channel_tv = 'N' + GROUP BY s_store_id + ), + csr AS ( + SELECT + cp_catalog_page_id AS catalog_page_id, + sum(cs_ext_sales_price) AS sales, + sum(coalesce(cr_return_amount, 0)) AS returns, + sum(cs_net_profit - coalesce(cr_net_loss, 0)) AS profit + FROM catalog_sales + LEFT OUTER JOIN + catalog_returns + ON (cs_item_sk = cr_item_sk AND cs_order_number = cr_order_number), + date_dim, + catalog_page, + item, + promotion + WHERE + cs_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND ( + cast('2000-08-23' AS date) + INTERVAL '30 days' + ) + AND cs_catalog_page_sk = cp_catalog_page_sk + AND cs_item_sk = i_item_sk + AND i_current_price > 50 + AND cs_promo_sk = p_promo_sk + AND p_channel_tv = 'N' + GROUP BY cp_catalog_page_id + ), + wsr AS ( + SELECT + web_site_id, + sum(ws_ext_sales_price) AS sales, + sum(coalesce(wr_return_amt, 0)) AS returns, + sum(ws_net_profit - coalesce(wr_net_loss, 0)) AS profit + FROM web_sales + LEFT OUTER JOIN + web_returns + ON (ws_item_sk = wr_item_sk AND ws_order_number = wr_order_number), + date_dim, + web_site, + item, + promotion + WHERE + ws_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND ( + cast('2000-08-23' AS date) + INTERVAL '30 days' + ) + AND ws_web_site_sk = web_site_sk + AND ws_item_sk = i_item_sk + AND i_current_price > 50 + AND ws_promo_sk = p_promo_sk + AND p_channel_tv = 'N' + GROUP BY web_site_id + ) +SELECT channel, id, sum(sales) AS sales, sum(returns) AS returns, sum(profit) AS profit +FROM + ( + SELECT + 'store channel' AS channel, + 'store' || store_id AS id, + sales, + returns, + profit + FROM ssr + UNION ALL + SELECT + 'catalog channel' AS channel, + 'catalog_page' || catalog_page_id AS id, + sales, + returns, + profit + FROM csr + UNION ALL + SELECT + 'web channel' AS channel, + 'web_site' || web_site_id AS id, + sales, + returns, + profit + FROM wsr + ) x +GROUP BY rollup (channel, id) +ORDER BY channel, id +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/81.sql b/datafusion/core/tests/tpc-ds/81.sql index f7d204747298b..82fbe23096968 100644 --- a/datafusion/core/tests/tpc-ds/81.sql +++ b/datafusion/core/tests/tpc-ds/81.sql @@ -1,32 +1,59 @@ --- Copyright 2015 Transaction Processing Performance Council - -with customer_total_return as - (select cr_returning_customer_sk as ctr_customer_sk - ,ca_state as ctr_state, - sum(cr_return_amt_inc_tax) as ctr_total_return - from catalog_returns - ,date_dim - ,customer_address - where cr_returned_date_sk = d_date_sk - and d_year =1998 - and cr_returning_addr_sk = ca_address_sk - group by cr_returning_customer_sk - ,ca_state ) - select c_customer_id,c_salutation,c_first_name,c_last_name,ca_street_number,ca_street_name - ,ca_street_type,ca_suite_number,ca_city,ca_county,ca_state,ca_zip,ca_country,ca_gmt_offset - ,ca_location_type,ctr_total_return - from customer_total_return ctr1 - ,customer_address - ,customer - where ctr1.ctr_total_return > (select avg(ctr_total_return)*1.2 - from customer_total_return ctr2 - where ctr1.ctr_state = ctr2.ctr_state) - and ca_address_sk = c_current_addr_sk - and ca_state = 'IL' - and ctr1.ctr_customer_sk = c_customer_sk - order by c_customer_id,c_salutation,c_first_name,c_last_name,ca_street_number,ca_street_name - ,ca_street_type,ca_suite_number,ca_city,ca_county,ca_state,ca_zip,ca_country,ca_gmt_offset - ,ca_location_type,ctr_total_return - limit 100; - - +WITH + customer_total_return AS ( + SELECT + cr_returning_customer_sk AS ctr_customer_sk, + ca_state AS ctr_state, + sum(cr_return_amt_inc_tax) AS ctr_total_return + FROM catalog_returns, date_dim, customer_address + WHERE + cr_returned_date_sk = d_date_sk + AND d_year = 2000 + AND cr_returning_addr_sk = ca_address_sk + GROUP BY cr_returning_customer_sk, ca_state + ) +SELECT + c_customer_id, + c_salutation, + c_first_name, + c_last_name, + ca_street_number, + ca_street_name, + ca_street_type, + ca_suite_number, + ca_city, + ca_county, + ca_state, + ca_zip, + ca_country, + ca_gmt_offset, + ca_location_type, + ctr_total_return +FROM customer_total_return ctr1, customer_address, customer +WHERE + ctr1.ctr_total_return > ( + SELECT avg(ctr_total_return) * 1.2 + FROM customer_total_return ctr2 + WHERE ctr1.ctr_state = ctr2.ctr_state + ) + AND ca_address_sk = c_current_addr_sk + AND ca_state = 'GA' + AND ctr1.ctr_customer_sk = c_customer_sk +ORDER BY + c_customer_id, + c_salutation, + c_first_name, + c_last_name, + ca_street_number, + ca_street_name, + ca_street_type, + ca_suite_number, + ca_city, + ca_county, + ca_state, + ca_zip, + ca_country, + ca_gmt_offset, + ca_location_type, + ctr_total_return +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/82.sql b/datafusion/core/tests/tpc-ds/82.sql index e2000a98c180d..2bc26b9fffda9 100644 --- a/datafusion/core/tests/tpc-ds/82.sql +++ b/datafusion/core/tests/tpc-ds/82.sql @@ -1,18 +1,16 @@ --- Copyright 2015 Transaction Processing Performance Council - -select i_item_id - ,i_item_desc - ,i_current_price - from item, inventory, date_dim, store_sales - where i_current_price between 30 and 30+30 - and inv_item_sk = i_item_sk - and d_date_sk=inv_date_sk - and d_date between cast('2002-05-30' as date) and (cast('2002-05-30' as date) + INTERVAL '60 days') - and i_manufact_id in (437,129,727,663) - and inv_quantity_on_hand between 100 and 500 - and ss_item_sk = i_item_sk - group by i_item_id,i_item_desc,i_current_price - order by i_item_id - limit 100; - - +SELECT i_item_id, i_item_desc, i_current_price +FROM item, inventory, date_dim, store_sales +WHERE + i_current_price BETWEEN 62 AND 62 + 30 + AND inv_item_sk = i_item_sk + AND d_date_sk = inv_date_sk + AND d_date BETWEEN cast('2000-05-25' AS date) AND ( + cast('2000-05-25' AS date) + INTERVAL '60 days' + ) + AND i_manufact_id IN (129, 270, 821, 423) + AND inv_quantity_on_hand BETWEEN 100 AND 500 + AND ss_item_sk = i_item_sk +GROUP BY i_item_id, i_item_desc, i_current_price +ORDER BY i_item_id +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/83.sql b/datafusion/core/tests/tpc-ds/83.sql index 43db876a4f3de..a453a9bac29e2 100644 --- a/datafusion/core/tests/tpc-ds/83.sql +++ b/datafusion/core/tests/tpc-ds/83.sql @@ -1,68 +1,69 @@ --- Copyright 2015 Transaction Processing Performance Council - -with sr_items as - (select i_item_id item_id, - sum(sr_return_quantity) sr_item_qty - from store_returns, - item, - date_dim - where sr_item_sk = i_item_sk - and d_date in - (select d_date - from date_dim - where d_week_seq in - (select d_week_seq - from date_dim - where d_date in ('1998-01-02','1998-10-15','1998-11-10'))) - and sr_returned_date_sk = d_date_sk - group by i_item_id), - cr_items as - (select i_item_id item_id, - sum(cr_return_quantity) cr_item_qty - from catalog_returns, - item, - date_dim - where cr_item_sk = i_item_sk - and d_date in - (select d_date - from date_dim - where d_week_seq in - (select d_week_seq - from date_dim - where d_date in ('1998-01-02','1998-10-15','1998-11-10'))) - and cr_returned_date_sk = d_date_sk - group by i_item_id), - wr_items as - (select i_item_id item_id, - sum(wr_return_quantity) wr_item_qty - from web_returns, - item, - date_dim - where wr_item_sk = i_item_sk - and d_date in - (select d_date - from date_dim - where d_week_seq in - (select d_week_seq - from date_dim - where d_date in ('1998-01-02','1998-10-15','1998-11-10'))) - and wr_returned_date_sk = d_date_sk - group by i_item_id) - select sr_items.item_id - ,sr_item_qty - ,sr_item_qty/(sr_item_qty+cr_item_qty+wr_item_qty)/3.0 * 100 sr_dev - ,cr_item_qty - ,cr_item_qty/(sr_item_qty+cr_item_qty+wr_item_qty)/3.0 * 100 cr_dev - ,wr_item_qty - ,wr_item_qty/(sr_item_qty+cr_item_qty+wr_item_qty)/3.0 * 100 wr_dev - ,(sr_item_qty+cr_item_qty+wr_item_qty)/3.0 average - from sr_items - ,cr_items - ,wr_items - where sr_items.item_id=cr_items.item_id - and sr_items.item_id=wr_items.item_id - order by sr_items.item_id - ,sr_item_qty - limit 100; - - +WITH + sr_items AS ( + SELECT i_item_id item_id, sum(sr_return_quantity) sr_item_qty + FROM store_returns, item, date_dim + WHERE + sr_item_sk = i_item_sk + AND d_date IN ( + SELECT d_date + FROM date_dim + WHERE + d_week_seq IN ( + SELECT d_week_seq + FROM date_dim + WHERE d_date IN ('2000-06-30', '2000-09-27', '2000-11-17') + ) + ) + AND sr_returned_date_sk = d_date_sk + GROUP BY i_item_id + ), + cr_items AS ( + SELECT i_item_id item_id, sum(cr_return_quantity) cr_item_qty + FROM catalog_returns, item, date_dim + WHERE + cr_item_sk = i_item_sk + AND d_date IN ( + SELECT d_date + FROM date_dim + WHERE + d_week_seq IN ( + SELECT d_week_seq + FROM date_dim + WHERE d_date IN ('2000-06-30', '2000-09-27', '2000-11-17') + ) + ) + AND cr_returned_date_sk = d_date_sk + GROUP BY i_item_id + ), + wr_items AS ( + SELECT i_item_id item_id, sum(wr_return_quantity) wr_item_qty + FROM web_returns, item, date_dim + WHERE + wr_item_sk = i_item_sk + AND d_date IN ( + SELECT d_date + FROM date_dim + WHERE + d_week_seq IN ( + SELECT d_week_seq + FROM date_dim + WHERE d_date IN ('2000-06-30', '2000-09-27', '2000-11-17') + ) + ) + AND wr_returned_date_sk = d_date_sk + GROUP BY i_item_id + ) +SELECT + sr_items.item_id, + sr_item_qty, + sr_item_qty / (sr_item_qty + cr_item_qty + wr_item_qty) / 3.0 * 100 sr_dev, + cr_item_qty, + cr_item_qty / (sr_item_qty + cr_item_qty + wr_item_qty) / 3.0 * 100 cr_dev, + wr_item_qty, + wr_item_qty / (sr_item_qty + cr_item_qty + wr_item_qty) / 3.0 * 100 wr_dev, + (sr_item_qty + cr_item_qty + wr_item_qty) / 3.0 average +FROM sr_items, cr_items, wr_items +WHERE sr_items.item_id = cr_items.item_id AND sr_items.item_id = wr_items.item_id +ORDER BY sr_items.item_id, sr_item_qty +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/84.sql b/datafusion/core/tests/tpc-ds/84.sql index 8bfed192c6c1c..f3999bd693430 100644 --- a/datafusion/core/tests/tpc-ds/84.sql +++ b/datafusion/core/tests/tpc-ds/84.sql @@ -1,22 +1,22 @@ --- Copyright 2015 Transaction Processing Performance Council - -select c_customer_id as customer_id - , coalesce(c_last_name,'') || ', ' || coalesce(c_first_name,'') as customername - from customer - ,customer_address - ,customer_demographics - ,household_demographics - ,income_band - ,store_returns - where ca_city = 'Hopewell' - and c_current_addr_sk = ca_address_sk - and ib_lower_bound >= 32287 - and ib_upper_bound <= 32287 + 50000 - and ib_income_band_sk = hd_income_band_sk - and cd_demo_sk = c_current_cdemo_sk - and hd_demo_sk = c_current_hdemo_sk - and sr_cdemo_sk = cd_demo_sk - order by c_customer_id - limit 100; - - +SELECT + c_customer_id AS customer_id, + coalesce(c_last_name, '') || ', ' || coalesce(c_first_name, '') AS customername +FROM + customer, + customer_address, + customer_demographics, + household_demographics, + income_band, + store_returns +WHERE + ca_city = 'Edgewood' + AND c_current_addr_sk = ca_address_sk + AND ib_lower_bound >= 38128 + AND ib_upper_bound <= 38128 + 50000 + AND ib_income_band_sk = hd_income_band_sk + AND cd_demo_sk = c_current_cdemo_sk + AND hd_demo_sk = c_current_hdemo_sk + AND sr_cdemo_sk = cd_demo_sk +ORDER BY c_customer_id +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/85.sql b/datafusion/core/tests/tpc-ds/85.sql index 748657d30e1b3..c61c0cc96368a 100644 --- a/datafusion/core/tests/tpc-ds/85.sql +++ b/datafusion/core/tests/tpc-ds/85.sql @@ -1,85 +1,66 @@ --- Copyright 2015 Transaction Processing Performance Council - -select substr(r_reason_desc,1,20) - ,avg(ws_quantity) - ,avg(wr_refunded_cash) - ,avg(wr_fee) - from web_sales, web_returns, web_page, customer_demographics cd1, - customer_demographics cd2, customer_address, date_dim, reason - where ws_web_page_sk = wp_web_page_sk - and ws_item_sk = wr_item_sk - and ws_order_number = wr_order_number - and ws_sold_date_sk = d_date_sk and d_year = 1998 - and cd1.cd_demo_sk = wr_refunded_cdemo_sk - and cd2.cd_demo_sk = wr_returning_cdemo_sk - and ca_address_sk = wr_refunded_addr_sk - and r_reason_sk = wr_reason_sk - and - ( - ( - cd1.cd_marital_status = 'M' - and - cd1.cd_marital_status = cd2.cd_marital_status - and - cd1.cd_education_status = '4 yr Degree' - and - cd1.cd_education_status = cd2.cd_education_status - and - ws_sales_price between 100.00 and 150.00 +SELECT + substr(r_reason_desc, 1, 20), avg(ws_quantity), avg(wr_refunded_cash), avg(wr_fee) +FROM + web_sales, + web_returns, + web_page, + customer_demographics cd1, + customer_demographics cd2, + customer_address, + date_dim, + reason +WHERE + ws_web_page_sk = wp_web_page_sk + AND ws_item_sk = wr_item_sk + AND ws_order_number = wr_order_number + AND ws_sold_date_sk = d_date_sk + AND d_year = 2000 + AND cd1.cd_demo_sk = wr_refunded_cdemo_sk + AND cd2.cd_demo_sk = wr_returning_cdemo_sk + AND ca_address_sk = wr_refunded_addr_sk + AND r_reason_sk = wr_reason_sk + AND ( + ( + cd1.cd_marital_status = 'M' + AND cd1.cd_marital_status = cd2.cd_marital_status + AND cd1.cd_education_status = 'Advanced Degree' + AND cd1.cd_education_status = cd2.cd_education_status + AND ws_sales_price BETWEEN 100.00 AND 150.00 + ) + OR ( + cd1.cd_marital_status = 'S' + AND cd1.cd_marital_status = cd2.cd_marital_status + AND cd1.cd_education_status = 'College' + AND cd1.cd_education_status = cd2.cd_education_status + AND ws_sales_price BETWEEN 50.00 AND 100.00 + ) + OR ( + cd1.cd_marital_status = 'W' + AND cd1.cd_marital_status = cd2.cd_marital_status + AND cd1.cd_education_status = '2 yr Degree' + AND cd1.cd_education_status = cd2.cd_education_status + AND ws_sales_price BETWEEN 150.00 AND 200.00 + ) ) - or - ( - cd1.cd_marital_status = 'D' - and - cd1.cd_marital_status = cd2.cd_marital_status - and - cd1.cd_education_status = 'Primary' - and - cd1.cd_education_status = cd2.cd_education_status - and - ws_sales_price between 50.00 and 100.00 + AND ( + ( + ca_country = 'United States' + AND ca_state IN ('IN', 'OH', 'NJ') + AND ws_net_profit BETWEEN 100 AND 200 + ) + OR ( + ca_country = 'United States' + AND ca_state IN ('WI', 'CT', 'KY') + AND ws_net_profit BETWEEN 150 AND 300 + ) + OR ( + ca_country = 'United States' + AND ca_state IN ('LA', 'IA', 'AR') + AND ws_net_profit BETWEEN 50 AND 250 + ) ) - or - ( - cd1.cd_marital_status = 'U' - and - cd1.cd_marital_status = cd2.cd_marital_status - and - cd1.cd_education_status = 'Advanced Degree' - and - cd1.cd_education_status = cd2.cd_education_status - and - ws_sales_price between 150.00 and 200.00 - ) - ) - and - ( - ( - ca_country = 'United States' - and - ca_state in ('KY', 'GA', 'NM') - and ws_net_profit between 100 and 200 - ) - or - ( - ca_country = 'United States' - and - ca_state in ('MT', 'OR', 'IN') - and ws_net_profit between 150 and 300 - ) - or - ( - ca_country = 'United States' - and - ca_state in ('WI', 'MO', 'WV') - and ws_net_profit between 50 and 250 - ) - ) -group by r_reason_desc -order by substr(r_reason_desc,1,20) - ,avg(ws_quantity) - ,avg(wr_refunded_cash) - ,avg(wr_fee) -limit 100; - - +GROUP BY r_reason_desc +ORDER BY + substr(r_reason_desc, 1, 20), avg(ws_quantity), avg(wr_refunded_cash), avg(wr_fee) +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/86.sql b/datafusion/core/tests/tpc-ds/86.sql index 0dcff5e81049e..b3842dd75bc64 100644 --- a/datafusion/core/tests/tpc-ds/86.sql +++ b/datafusion/core/tests/tpc-ds/86.sql @@ -1,27 +1,23 @@ --- Copyright 2015 Transaction Processing Performance Council - -select - sum(ws_net_paid) as total_sum - ,i_category - ,i_class - ,grouping(i_category)+grouping(i_class) as lochierarchy - ,rank() over ( - partition by grouping(i_category)+grouping(i_class), - case when grouping(i_class) = 0 then i_category end - order by sum(ws_net_paid) desc) as rank_within_parent - from - web_sales - ,date_dim d1 - ,item - where - d1.d_month_seq between 1212 and 1212+11 - and d1.d_date_sk = ws_sold_date_sk - and i_item_sk = ws_item_sk - group by rollup(i_category,i_class) - order by - lochierarchy desc, - case when lochierarchy = 0 then i_category end, - rank_within_parent - limit 100; - - +SELECT + sum(ws_net_paid) AS total_sum, + i_category, + i_class, + grouping(i_category) + grouping(i_class) AS lochierarchy, + rank() OVER ( + PARTITION BY + grouping(i_category) + grouping(i_class), + CASE WHEN grouping(i_class) = 0 THEN i_category END + ORDER BY sum(ws_net_paid) desc + ) AS rank_within_parent +FROM web_sales, date_dim d1, item +WHERE + d1.d_month_seq BETWEEN 1200 AND 1200 + 11 + AND d1.d_date_sk = ws_sold_date_sk + AND i_item_sk = ws_item_sk +GROUP BY rollup (i_category, i_class) +ORDER BY + lochierarchy desc, + CASE WHEN lochierarchy = 0 THEN i_category end, + rank_within_parent +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/87.sql b/datafusion/core/tests/tpc-ds/87.sql index 24e448891f09f..dcbc70cba47ab 100644 --- a/datafusion/core/tests/tpc-ds/87.sql +++ b/datafusion/core/tests/tpc-ds/87.sql @@ -1,24 +1,31 @@ --- Copyright 2015 Transaction Processing Performance Council - -select count(*) -from ((select distinct c_last_name, c_first_name, d_date - from store_sales, date_dim, customer - where store_sales.ss_sold_date_sk = date_dim.d_date_sk - and store_sales.ss_customer_sk = customer.c_customer_sk - and d_month_seq between 1212 and 1212+11) - except - (select distinct c_last_name, c_first_name, d_date - from catalog_sales, date_dim, customer - where catalog_sales.cs_sold_date_sk = date_dim.d_date_sk - and catalog_sales.cs_bill_customer_sk = customer.c_customer_sk - and d_month_seq between 1212 and 1212+11) - except - (select distinct c_last_name, c_first_name, d_date - from web_sales, date_dim, customer - where web_sales.ws_sold_date_sk = date_dim.d_date_sk - and web_sales.ws_bill_customer_sk = customer.c_customer_sk - and d_month_seq between 1212 and 1212+11) -) cool_cust +SELECT count(*) +FROM ((SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM store_sales, + date_dim, + customer + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11) + except + (SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM catalog_sales, + date_dim, + customer + WHERE catalog_sales.cs_sold_date_sk = date_dim.d_date_sk + AND catalog_sales.cs_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11) + except + (SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM web_sales, + date_dim, + customer + WHERE web_sales.ws_sold_date_sk = date_dim.d_date_sk + AND web_sales.ws_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11)) cool_cust ; - - diff --git a/datafusion/core/tests/tpc-ds/88.sql b/datafusion/core/tests/tpc-ds/88.sql index 393ff02c320e2..b590efd26cc22 100644 --- a/datafusion/core/tests/tpc-ds/88.sql +++ b/datafusion/core/tests/tpc-ds/88.sql @@ -1,95 +1,202 @@ --- Copyright 2015 Transaction Processing Performance Council - -select * -from - (select count(*) h8_30_to_9 - from store_sales, household_demographics , time_dim, store - where ss_sold_time_sk = time_dim.t_time_sk - and ss_hdemo_sk = household_demographics.hd_demo_sk - and ss_store_sk = s_store_sk - and time_dim.t_hour = 8 - and time_dim.t_minute >= 30 - and ((household_demographics.hd_dep_count = 3 and household_demographics.hd_vehicle_count<=3+2) or - (household_demographics.hd_dep_count = 0 and household_demographics.hd_vehicle_count<=0+2) or - (household_demographics.hd_dep_count = 1 and household_demographics.hd_vehicle_count<=1+2)) - and store.s_store_name = 'ese') s1, - (select count(*) h9_to_9_30 - from store_sales, household_demographics , time_dim, store - where ss_sold_time_sk = time_dim.t_time_sk - and ss_hdemo_sk = household_demographics.hd_demo_sk - and ss_store_sk = s_store_sk - and time_dim.t_hour = 9 - and time_dim.t_minute < 30 - and ((household_demographics.hd_dep_count = 3 and household_demographics.hd_vehicle_count<=3+2) or - (household_demographics.hd_dep_count = 0 and household_demographics.hd_vehicle_count<=0+2) or - (household_demographics.hd_dep_count = 1 and household_demographics.hd_vehicle_count<=1+2)) - and store.s_store_name = 'ese') s2, - (select count(*) h9_30_to_10 - from store_sales, household_demographics , time_dim, store - where ss_sold_time_sk = time_dim.t_time_sk - and ss_hdemo_sk = household_demographics.hd_demo_sk - and ss_store_sk = s_store_sk - and time_dim.t_hour = 9 - and time_dim.t_minute >= 30 - and ((household_demographics.hd_dep_count = 3 and household_demographics.hd_vehicle_count<=3+2) or - (household_demographics.hd_dep_count = 0 and household_demographics.hd_vehicle_count<=0+2) or - (household_demographics.hd_dep_count = 1 and household_demographics.hd_vehicle_count<=1+2)) - and store.s_store_name = 'ese') s3, - (select count(*) h10_to_10_30 - from store_sales, household_demographics , time_dim, store - where ss_sold_time_sk = time_dim.t_time_sk - and ss_hdemo_sk = household_demographics.hd_demo_sk - and ss_store_sk = s_store_sk - and time_dim.t_hour = 10 - and time_dim.t_minute < 30 - and ((household_demographics.hd_dep_count = 3 and household_demographics.hd_vehicle_count<=3+2) or - (household_demographics.hd_dep_count = 0 and household_demographics.hd_vehicle_count<=0+2) or - (household_demographics.hd_dep_count = 1 and household_demographics.hd_vehicle_count<=1+2)) - and store.s_store_name = 'ese') s4, - (select count(*) h10_30_to_11 - from store_sales, household_demographics , time_dim, store - where ss_sold_time_sk = time_dim.t_time_sk - and ss_hdemo_sk = household_demographics.hd_demo_sk - and ss_store_sk = s_store_sk - and time_dim.t_hour = 10 - and time_dim.t_minute >= 30 - and ((household_demographics.hd_dep_count = 3 and household_demographics.hd_vehicle_count<=3+2) or - (household_demographics.hd_dep_count = 0 and household_demographics.hd_vehicle_count<=0+2) or - (household_demographics.hd_dep_count = 1 and household_demographics.hd_vehicle_count<=1+2)) - and store.s_store_name = 'ese') s5, - (select count(*) h11_to_11_30 - from store_sales, household_demographics , time_dim, store - where ss_sold_time_sk = time_dim.t_time_sk - and ss_hdemo_sk = household_demographics.hd_demo_sk - and ss_store_sk = s_store_sk - and time_dim.t_hour = 11 - and time_dim.t_minute < 30 - and ((household_demographics.hd_dep_count = 3 and household_demographics.hd_vehicle_count<=3+2) or - (household_demographics.hd_dep_count = 0 and household_demographics.hd_vehicle_count<=0+2) or - (household_demographics.hd_dep_count = 1 and household_demographics.hd_vehicle_count<=1+2)) - and store.s_store_name = 'ese') s6, - (select count(*) h11_30_to_12 - from store_sales, household_demographics , time_dim, store - where ss_sold_time_sk = time_dim.t_time_sk - and ss_hdemo_sk = household_demographics.hd_demo_sk - and ss_store_sk = s_store_sk - and time_dim.t_hour = 11 - and time_dim.t_minute >= 30 - and ((household_demographics.hd_dep_count = 3 and household_demographics.hd_vehicle_count<=3+2) or - (household_demographics.hd_dep_count = 0 and household_demographics.hd_vehicle_count<=0+2) or - (household_demographics.hd_dep_count = 1 and household_demographics.hd_vehicle_count<=1+2)) - and store.s_store_name = 'ese') s7, - (select count(*) h12_to_12_30 - from store_sales, household_demographics , time_dim, store - where ss_sold_time_sk = time_dim.t_time_sk - and ss_hdemo_sk = household_demographics.hd_demo_sk - and ss_store_sk = s_store_sk - and time_dim.t_hour = 12 - and time_dim.t_minute < 30 - and ((household_demographics.hd_dep_count = 3 and household_demographics.hd_vehicle_count<=3+2) or - (household_demographics.hd_dep_count = 0 and household_demographics.hd_vehicle_count<=0+2) or - (household_demographics.hd_dep_count = 1 and household_demographics.hd_vehicle_count<=1+2)) - and store.s_store_name = 'ese') s8 +SELECT * +FROM (SELECT count(*) h8_30_to_9 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 8 + AND time_dim.t_minute >= 30 + AND ( + ( + household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count <= 4 + 2 + ) + OR ( + household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count <= 2 + 2 + ) + OR ( + household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count <= 0 + 2 + ) + ) + AND store.s_store_name = 'ese') s1, + (SELECT count(*) h9_to_9_30 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 9 + AND time_dim.t_minute < 30 + AND ( + ( + household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count <= 4 + 2 + ) + OR ( + household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count <= 2 + 2 + ) + OR ( + household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count <= 0 + 2 + ) + ) + AND store.s_store_name = 'ese') s2, + (SELECT count(*) h9_30_to_10 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 9 + AND time_dim.t_minute >= 30 + AND ( + ( + household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count <= 4 + 2 + ) + OR ( + household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count <= 2 + 2 + ) + OR ( + household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count <= 0 + 2 + ) + ) + AND store.s_store_name = 'ese') s3, + (SELECT count(*) h10_to_10_30 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 10 + AND time_dim.t_minute < 30 + AND ( + ( + household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count <= 4 + 2 + ) + OR ( + household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count <= 2 + 2 + ) + OR ( + household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count <= 0 + 2 + ) + ) + AND store.s_store_name = 'ese') s4, + (SELECT count(*) h10_30_to_11 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 10 + AND time_dim.t_minute >= 30 + AND ( + ( + household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count <= 4 + 2 + ) + OR ( + household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count <= 2 + 2 + ) + OR ( + household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count <= 0 + 2 + ) + ) + AND store.s_store_name = 'ese') s5, + (SELECT count(*) h11_to_11_30 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 11 + AND time_dim.t_minute < 30 + AND ( + ( + household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count <= 4 + 2 + ) + OR ( + household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count <= 2 + 2 + ) + OR ( + household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count <= 0 + 2 + ) + ) + AND store.s_store_name = 'ese') s6, + (SELECT count(*) h11_30_to_12 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 11 + AND time_dim.t_minute >= 30 + AND ( + ( + household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count <= 4 + 2 + ) + OR ( + household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count <= 2 + 2 + ) + OR ( + household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count <= 0 + 2 + ) + ) + AND store.s_store_name = 'ese') s7, + (SELECT count(*) h12_to_12_30 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 12 + AND time_dim.t_minute < 30 + AND ( + ( + household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count <= 4 + 2 + ) + OR ( + household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count <= 2 + 2 + ) + OR ( + household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count <= 0 + 2 + ) + ) + AND store.s_store_name = 'ese') s8 ; - - diff --git a/datafusion/core/tests/tpc-ds/89.sql b/datafusion/core/tests/tpc-ds/89.sql index d87c2c629e095..cc9ca1fc1bc51 100644 --- a/datafusion/core/tests/tpc-ds/89.sql +++ b/datafusion/core/tests/tpc-ds/89.sql @@ -1,29 +1,43 @@ --- Copyright 2015 Transaction Processing Performance Council - -select * -from( -select i_category, i_class, i_brand, - s_store_name, s_company_name, - d_moy, - sum(ss_sales_price) sum_sales, - avg(sum(ss_sales_price)) over - (partition by i_category, i_brand, s_store_name, s_company_name) - avg_monthly_sales -from item, store_sales, date_dim, store -where ss_item_sk = i_item_sk and - ss_sold_date_sk = d_date_sk and - ss_store_sk = s_store_sk and - d_year in (2000) and - ((i_category in ('Home','Books','Electronics') and - i_class in ('wallpaper','parenting','musical') - ) - or (i_category in ('Shoes','Jewelry','Men') and - i_class in ('womens','birdal','pants') - )) -group by i_category, i_class, i_brand, - s_store_name, s_company_name, d_moy) tmp1 -where case when (avg_monthly_sales <> 0) then (abs(sum_sales - avg_monthly_sales) / avg_monthly_sales) else null end > 0.1 -order by sum_sales - avg_monthly_sales, s_store_name -limit 100; - - +SELECT * +FROM + ( + SELECT + i_category, + i_class, + i_brand, + s_store_name, + s_company_name, + d_moy, + sum(ss_sales_price) sum_sales, + avg(sum(ss_sales_price)) OVER ( + PARTITION BY i_category, i_brand, s_store_name, s_company_name + ) + avg_monthly_sales + FROM item, store_sales, date_dim, store + WHERE + ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND d_year IN (1999) + AND ( + ( + i_category IN ('Books', 'Electronics', 'Sports') + AND i_class IN ('computers', 'stereo', 'football') + ) + OR ( + i_category IN ('Men', 'Jewelry', 'Women') + AND i_class IN ('shirts', 'birdal', 'dresses') + ) + ) + GROUP BY i_category, i_class, i_brand, s_store_name, s_company_name, d_moy + ) tmp1 +WHERE + CASE + WHEN (avg_monthly_sales <> 0) + THEN (abs(sum_sales - avg_monthly_sales) / avg_monthly_sales) + ELSE null + END + > 0.1 +ORDER BY sum_sales - avg_monthly_sales, s_store_name +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/9.sql b/datafusion/core/tests/tpc-ds/9.sql index 0b5e4d0636277..83f0bd7d1fd23 100644 --- a/datafusion/core/tests/tpc-ds/9.sql +++ b/datafusion/core/tests/tpc-ds/9.sql @@ -1,52 +1,76 @@ --- Copyright 2015 Transaction Processing Performance Council - -select case when (select count(*) - from store_sales - where ss_quantity between 1 and 20) > 409437 - then (select avg(ss_ext_tax) - from store_sales - where ss_quantity between 1 and 20) - else (select avg(ss_net_paid) - from store_sales - where ss_quantity between 1 and 20) end bucket1 , - case when (select count(*) - from store_sales - where ss_quantity between 21 and 40) > 4595804 - then (select avg(ss_ext_tax) - from store_sales - where ss_quantity between 21 and 40) - else (select avg(ss_net_paid) - from store_sales - where ss_quantity between 21 and 40) end bucket2, - case when (select count(*) - from store_sales - where ss_quantity between 41 and 60) > 1333710 - then (select avg(ss_ext_tax) - from store_sales - where ss_quantity between 41 and 60) - else (select avg(ss_net_paid) - from store_sales - where ss_quantity between 41 and 60) end bucket3, - case when (select count(*) - from store_sales - where ss_quantity between 61 and 80) > 2361102 - then (select avg(ss_ext_tax) - from store_sales - where ss_quantity between 61 and 80) - else (select avg(ss_net_paid) - from store_sales - where ss_quantity between 61 and 80) end bucket4, - case when (select count(*) - from store_sales - where ss_quantity between 81 and 100) > 1517817 - then (select avg(ss_ext_tax) - from store_sales - where ss_quantity between 81 and 100) - else (select avg(ss_net_paid) - from store_sales - where ss_quantity between 81 and 100) end bucket5 -from reason -where r_reason_sk = 1 +SELECT CASE + WHEN + (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 1 + AND 20) + > 74129 + THEN + (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 1 + AND 20) + ELSE + (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 1 AND 20) + END bucket1 + , + CASE + WHEN + (SELECT count(*) FROM store_sales WHERE ss_quantity BETWEEN 21 AND 40) + > 122840 + THEN + (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 21 AND 40) + ELSE + (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 21 AND 40) + END bucket2 + , + CASE + WHEN + (SELECT count(*) FROM store_sales WHERE ss_quantity BETWEEN 41 AND 60) + > 56580 + THEN + (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 41 AND 60) + ELSE + (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 41 AND 60) + END bucket3 + , + CASE + WHEN + (SELECT count(*) FROM store_sales WHERE ss_quantity BETWEEN 61 AND 80) + > 10097 + THEN + (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 61 AND 80) + ELSE + (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 61 AND 80) + END bucket4 + , + CASE + WHEN + (SELECT count(*) FROM store_sales WHERE ss_quantity BETWEEN 81 AND 100) + > 165306 + THEN + (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 81 AND 100) + ELSE + (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 81 AND 100) + END bucket5 +FROM reason +WHERE r_reason_sk = 1 ; - - diff --git a/datafusion/core/tests/tpc-ds/90.sql b/datafusion/core/tests/tpc-ds/90.sql index 62a62d0f41734..724a1e9a77d33 100644 --- a/datafusion/core/tests/tpc-ds/90.sql +++ b/datafusion/core/tests/tpc-ds/90.sql @@ -1,23 +1,27 @@ --- Copyright 2015 Transaction Processing Performance Council - -select cast(amc as decimal(15,4))/cast(pmc as decimal(15,4)) am_pm_ratio - from ( select count(*) amc - from web_sales, household_demographics , time_dim, web_page - where ws_sold_time_sk = time_dim.t_time_sk - and ws_ship_hdemo_sk = household_demographics.hd_demo_sk - and ws_web_page_sk = web_page.wp_web_page_sk - and time_dim.t_hour between 6 and 6+1 - and household_demographics.hd_dep_count = 8 - and web_page.wp_char_count between 5000 and 5200) at, - ( select count(*) pmc - from web_sales, household_demographics , time_dim, web_page - where ws_sold_time_sk = time_dim.t_time_sk - and ws_ship_hdemo_sk = household_demographics.hd_demo_sk - and ws_web_page_sk = web_page.wp_web_page_sk - and time_dim.t_hour between 14 and 14+1 - and household_demographics.hd_dep_count = 8 - and web_page.wp_char_count between 5000 and 5200) pt - order by am_pm_ratio - limit 100; - - +SELECT cast(amc AS decimal(15, 4)) / cast(pmc AS decimal(15, 4)) am_pm_ratio +FROM + ( + SELECT count(*) amc + FROM web_sales, household_demographics, time_dim, web_page + WHERE + ws_sold_time_sk = time_dim.t_time_sk + AND ws_ship_hdemo_sk = household_demographics.hd_demo_sk + AND ws_web_page_sk = web_page.wp_web_page_sk + AND time_dim.t_hour BETWEEN 8 AND 8 + 1 + AND household_demographics.hd_dep_count = 6 + AND web_page.wp_char_count BETWEEN 5000 AND 5200 + ) at1, + ( + SELECT count(*) pmc + FROM web_sales, household_demographics, time_dim, web_page + WHERE + ws_sold_time_sk = time_dim.t_time_sk + AND ws_ship_hdemo_sk = household_demographics.hd_demo_sk + AND ws_web_page_sk = web_page.wp_web_page_sk + AND time_dim.t_hour BETWEEN 19 AND 19 + 1 + AND household_demographics.hd_dep_count = 6 + AND web_page.wp_char_count BETWEEN 5000 AND 5200 + ) pt +ORDER BY am_pm_ratio +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/91.sql b/datafusion/core/tests/tpc-ds/91.sql index 42aa647ee88bd..78b4ed1f82600 100644 --- a/datafusion/core/tests/tpc-ds/91.sql +++ b/datafusion/core/tests/tpc-ds/91.sql @@ -1,32 +1,28 @@ --- Copyright 2015 Transaction Processing Performance Council - -select - cc_call_center_id Call_Center, - cc_name Call_Center_Name, - cc_manager Manager, - sum(cr_net_loss) Returns_Loss -from - call_center, - catalog_returns, - date_dim, - customer, - customer_address, - customer_demographics, - household_demographics -where - cr_call_center_sk = cc_call_center_sk -and cr_returned_date_sk = d_date_sk -and cr_returning_customer_sk= c_customer_sk -and cd_demo_sk = c_current_cdemo_sk -and hd_demo_sk = c_current_hdemo_sk -and ca_address_sk = c_current_addr_sk -and d_year = 1999 -and d_moy = 11 -and ( (cd_marital_status = 'M' and cd_education_status = 'Unknown') - or(cd_marital_status = 'W' and cd_education_status = 'Advanced Degree')) -and hd_buy_potential like '0-500%' -and ca_gmt_offset = -7 -group by cc_call_center_id,cc_name,cc_manager,cd_marital_status,cd_education_status -order by sum(cr_net_loss) desc; - - +SELECT cc_call_center_id call_center, + cc_name call_center_name, + cc_manager manager, + sum(cr_net_loss) returns_loss +FROM call_center, + catalog_returns, + date_dim, + customer, + customer_address, + customer_demographics, + household_demographics +WHERE cr_call_center_sk = cc_call_center_sk + AND cr_returned_date_sk = d_date_sk + AND cr_returning_customer_sk = c_customer_sk + AND cd_demo_sk = c_current_cdemo_sk + AND hd_demo_sk = c_current_hdemo_sk + AND ca_address_sk = c_current_addr_sk + AND d_year = 1998 + AND d_moy = 11 + AND ( + (cd_marital_status = 'M' AND cd_education_status = 'Unknown') + OR (cd_marital_status = 'W' AND cd_education_status = 'Advanced Degree') + ) + AND hd_buy_potential like 'Unknown%' + AND ca_gmt_offset = -7 +GROUP BY cc_call_center_id, cc_name, cc_manager, cd_marital_status, cd_education_status +ORDER BY sum(cr_net_loss) desc +; diff --git a/datafusion/core/tests/tpc-ds/92.sql b/datafusion/core/tests/tpc-ds/92.sql index 425962e5b1f50..e3ff2a3cae4d2 100644 --- a/datafusion/core/tests/tpc-ds/92.sql +++ b/datafusion/core/tests/tpc-ds/92.sql @@ -1,31 +1,20 @@ --- Copyright 2015 Transaction Processing Performance Council - -select - sum(ws_ext_discount_amt) as 'Excess Discount Amount' -from - web_sales - ,item - ,date_dim -where -i_manufact_id = 269 -and i_item_sk = ws_item_sk -and d_date between '1998-03-18' and - (cast('1998-03-18' as date) + INTERVAL '90 days') -and d_date_sk = ws_sold_date_sk -and ws_ext_discount_amt - > ( - SELECT - 1.3 * avg(ws_ext_discount_amt) - FROM - web_sales - ,date_dim - WHERE - ws_item_sk = i_item_sk - and d_date between '1998-03-18' and - (cast('1998-03-18' as date) + INTERVAL '90 days') - and d_date_sk = ws_sold_date_sk - ) -order by sum(ws_ext_discount_amt) -limit 100; - - +SELECT sum(ws_ext_discount_amt) AS excess_discount_amount +FROM web_sales, item, date_dim +WHERE + i_manufact_id = 350 + AND i_item_sk = ws_item_sk + AND d_date + BETWEEN '2000-01-27' AND (cast('2000-01-27' AS date) + INTERVAL '90 days') + AND d_date_sk = ws_sold_date_sk + AND ws_ext_discount_amt > ( + SELECT 1.3 * avg(ws_ext_discount_amt) + FROM web_sales, date_dim + WHERE + ws_item_sk = i_item_sk + AND d_date + BETWEEN '2000-01-27' AND (cast('2000-01-27' AS date) + INTERVAL '90 days') + AND d_date_sk = ws_sold_date_sk + ) +ORDER BY sum(ws_ext_discount_amt) +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/93.sql b/datafusion/core/tests/tpc-ds/93.sql index 3349cda8973c5..df7416bfb5fc0 100644 --- a/datafusion/core/tests/tpc-ds/93.sql +++ b/datafusion/core/tests/tpc-ds/93.sql @@ -1,19 +1,23 @@ --- Copyright 2015 Transaction Processing Performance Council - -select ss_customer_sk - ,sum(act_sales) sumsales - from (select ss_item_sk - ,ss_ticket_number - ,ss_customer_sk - ,case when sr_return_quantity is not null then (ss_quantity-sr_return_quantity)*ss_sales_price - else (ss_quantity*ss_sales_price) end act_sales - from store_sales left outer join store_returns on (sr_item_sk = ss_item_sk - and sr_ticket_number = ss_ticket_number) - ,reason - where sr_reason_sk = r_reason_sk - and r_reason_desc = 'Did not like the warranty') t - group by ss_customer_sk - order by sumsales, ss_customer_sk -limit 100; - - +SELECT ss_customer_sk, sum(act_sales) sumsales +FROM + ( + SELECT + ss_item_sk, + ss_ticket_number, + ss_customer_sk, + CASE + WHEN sr_return_quantity IS NOT NULL + THEN (ss_quantity - sr_return_quantity) * ss_sales_price + ELSE (ss_quantity * ss_sales_price) + END act_sales + FROM store_sales + LEFT OUTER JOIN + store_returns + ON (sr_item_sk = ss_item_sk AND sr_ticket_number = ss_ticket_number), + reason + WHERE sr_reason_sk = r_reason_sk AND r_reason_desc = 'reason 28' + ) t +GROUP BY ss_customer_sk +ORDER BY sumsales, ss_customer_sk +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/94.sql b/datafusion/core/tests/tpc-ds/94.sql index 17e788d443905..75b8a0147d769 100644 --- a/datafusion/core/tests/tpc-ds/94.sql +++ b/datafusion/core/tests/tpc-ds/94.sql @@ -1,30 +1,27 @@ --- Copyright 2015 Transaction Processing Performance Council - -select - count(distinct ws_order_number) as 'order count' - ,sum(ws_ext_ship_cost) as 'total shipping cost' - ,sum(ws_net_profit) as 'total net profit' -from - web_sales ws1 - ,date_dim - ,customer_address - ,web_site -where - d_date between '1999-5-01' and - (cast('1999-5-01' as date) + INTERVAL '60 days') -and ws1.ws_ship_date_sk = d_date_sk -and ws1.ws_ship_addr_sk = ca_address_sk -and ca_state = 'TX' -and ws1.ws_web_site_sk = web_site_sk -and web_company_name = 'pri' -and exists (select * - from web_sales ws2 - where ws1.ws_order_number = ws2.ws_order_number - and ws1.ws_warehouse_sk <> ws2.ws_warehouse_sk) -and not exists(select * - from web_returns wr1 - where ws1.ws_order_number = wr1.wr_order_number) -order by count(distinct ws_order_number) -limit 100; - - +SELECT + count(DISTINCT ws_order_number) AS order_count, + sum(ws_ext_ship_cost) AS total_shipping_cost, + sum(ws_net_profit) AS total_net_profit +FROM web_sales ws1, date_dim, customer_address, web_site +WHERE + d_date BETWEEN cast('1999-2-01' AS date) AND ( + cast('1999-2-01' AS date) + INTERVAL '60 days' + ) + AND ws1.ws_ship_date_sk = d_date_sk + AND ws1.ws_ship_addr_sk = ca_address_sk + AND ca_state = 'IL' + AND ws1.ws_web_site_sk = web_site_sk + AND web_company_name = 'pri' + AND exists ( + SELECT * + FROM web_sales ws2 + WHERE + ws1.ws_order_number = ws2.ws_order_number + AND ws1.ws_warehouse_sk <> ws2.ws_warehouse_sk + ) + AND NOT exists ( + SELECT * FROM web_returns wr1 WHERE ws1.ws_order_number = wr1.wr_order_number + ) +ORDER BY count(DISTINCT ws_order_number) +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/95.sql b/datafusion/core/tests/tpc-ds/95.sql index 1f1c9331cd66e..3035d38d3c55d 100644 --- a/datafusion/core/tests/tpc-ds/95.sql +++ b/datafusion/core/tests/tpc-ds/95.sql @@ -1,33 +1,29 @@ --- Copyright 2015 Transaction Processing Performance Council - -with ws_wh as -(select ws1.ws_order_number,ws1.ws_warehouse_sk wh1,ws2.ws_warehouse_sk wh2 - from web_sales ws1,web_sales ws2 - where ws1.ws_order_number = ws2.ws_order_number - and ws1.ws_warehouse_sk <> ws2.ws_warehouse_sk) - select - count(distinct ws_order_number) as 'order count' - ,sum(ws_ext_ship_cost) as 'total shipping cost' - ,sum(ws_net_profit) as 'total net profit' -from - web_sales ws1 - ,date_dim - ,customer_address - ,web_site -where - d_date between '1999-5-01' and - (cast('1999-5-01' as date) + INTERVAL '60 days') -and ws1.ws_ship_date_sk = d_date_sk -and ws1.ws_ship_addr_sk = ca_address_sk -and ca_state = 'TX' -and ws1.ws_web_site_sk = web_site_sk -and web_company_name = 'pri' -and ws1.ws_order_number in (select ws_order_number - from ws_wh) -and ws1.ws_order_number in (select wr_order_number - from web_returns,ws_wh - where wr_order_number = ws_wh.ws_order_number) -order by count(distinct ws_order_number) -limit 100; - - +WITH + ws_wh AS ( + SELECT ws1.ws_order_number, ws1.ws_warehouse_sk wh1, ws2.ws_warehouse_sk wh2 + FROM web_sales ws1, web_sales ws2 + WHERE + ws1.ws_order_number = ws2.ws_order_number + AND ws1.ws_warehouse_sk <> ws2.ws_warehouse_sk + ) +SELECT + count(DISTINCT ws_order_number) AS order_count, + sum(ws_ext_ship_cost) AS total_shipping_cost, + sum(ws_net_profit) AS total_net_profit +FROM web_sales ws1, date_dim, customer_address, web_site +WHERE + d_date BETWEEN '1999-2-01' AND (cast('1999-2-01' AS date) + INTERVAL '60 days') + AND ws1.ws_ship_date_sk = d_date_sk + AND ws1.ws_ship_addr_sk = ca_address_sk + AND ca_state = 'IL' + AND ws1.ws_web_site_sk = web_site_sk + AND web_company_name = 'pri' + AND ws1.ws_order_number IN (SELECT ws_order_number FROM ws_wh) + AND ws1.ws_order_number IN ( + SELECT wr_order_number + FROM web_returns, ws_wh + WHERE wr_order_number = ws_wh.ws_order_number + ) +ORDER BY count(DISTINCT ws_order_number) +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/96.sql b/datafusion/core/tests/tpc-ds/96.sql index 26491404aca54..1e4c821a739b6 100644 --- a/datafusion/core/tests/tpc-ds/96.sql +++ b/datafusion/core/tests/tpc-ds/96.sql @@ -1,17 +1,13 @@ --- Copyright 2015 Transaction Processing Performance Council - -select count(*) -from store_sales - ,household_demographics - ,time_dim, store -where ss_sold_time_sk = time_dim.t_time_sk - and ss_hdemo_sk = household_demographics.hd_demo_sk - and ss_store_sk = s_store_sk - and time_dim.t_hour = 8 - and time_dim.t_minute >= 30 - and household_demographics.hd_dep_count = 5 - and store.s_store_name = 'ese' -order by count(*) -limit 100; - - +SELECT count(*) +FROM store_sales, household_demographics, time_dim, store +WHERE + ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 20 + AND time_dim.t_minute >= 30 + AND household_demographics.hd_dep_count = 7 + AND store.s_store_name = 'ese' +ORDER BY count(*) +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/97.sql b/datafusion/core/tests/tpc-ds/97.sql index 814f6c6064f27..8f471e283bed6 100644 --- a/datafusion/core/tests/tpc-ds/97.sql +++ b/datafusion/core/tests/tpc-ds/97.sql @@ -1,26 +1,36 @@ --- Copyright 2015 Transaction Processing Performance Council - -with ssci as ( -select ss_customer_sk customer_sk - ,ss_item_sk item_sk -from store_sales,date_dim -where ss_sold_date_sk = d_date_sk - and d_month_seq between 1212 and 1212 + 11 -group by ss_customer_sk - ,ss_item_sk), -csci as( - select cs_bill_customer_sk customer_sk - ,cs_item_sk item_sk -from catalog_sales,date_dim -where cs_sold_date_sk = d_date_sk - and d_month_seq between 1212 and 1212 + 11 -group by cs_bill_customer_sk - ,cs_item_sk) - select sum(case when ssci.customer_sk is not null and csci.customer_sk is null then 1 else 0 end) store_only - ,sum(case when ssci.customer_sk is null and csci.customer_sk is not null then 1 else 0 end) catalog_only - ,sum(case when ssci.customer_sk is not null and csci.customer_sk is not null then 1 else 0 end) store_and_catalog -from ssci full outer join csci on (ssci.customer_sk=csci.customer_sk - and ssci.item_sk = csci.item_sk) -limit 100; - - +WITH + ssci AS ( + SELECT ss_customer_sk customer_sk, ss_item_sk item_sk + FROM store_sales, date_dim + WHERE ss_sold_date_sk = d_date_sk AND d_month_seq BETWEEN 1200 AND 1200 + 11 + GROUP BY ss_customer_sk, ss_item_sk + ), + csci AS ( + SELECT cs_bill_customer_sk customer_sk, cs_item_sk item_sk + FROM catalog_sales, date_dim + WHERE cs_sold_date_sk = d_date_sk AND d_month_seq BETWEEN 1200 AND 1200 + 11 + GROUP BY cs_bill_customer_sk, cs_item_sk + ) +SELECT + sum( + CASE + WHEN ssci.customer_sk IS NOT NULL AND csci.customer_sk IS NULL THEN 1 ELSE 0 + END + ) store_only, + sum( + CASE + WHEN ssci.customer_sk IS NULL AND csci.customer_sk IS NOT NULL THEN 1 ELSE 0 + END + ) catalog_only, + sum( + CASE + WHEN ssci.customer_sk IS NOT NULL AND csci.customer_sk IS NOT NULL + THEN 1 + ELSE 0 + END + ) store_and_catalog +FROM ssci +FULL OUTER JOIN + csci ON (ssci.customer_sk = csci.customer_sk AND ssci.item_sk = csci.item_sk) +LIMIT 100 +; diff --git a/datafusion/core/tests/tpc-ds/98.sql b/datafusion/core/tests/tpc-ds/98.sql index 1e0c9738f0e27..97146db36adcc 100644 --- a/datafusion/core/tests/tpc-ds/98.sql +++ b/datafusion/core/tests/tpc-ds/98.sql @@ -1,34 +1,21 @@ --- Copyright 2015 Transaction Processing Performance Council - -select i_item_id - ,i_item_desc - ,i_category - ,i_class - ,i_current_price - ,sum(ss_ext_sales_price) as itemrevenue - ,sum(ss_ext_sales_price)*100/sum(sum(ss_ext_sales_price)) over - (partition by i_class) as revenueratio -from - store_sales - ,item - ,date_dim -where - ss_item_sk = i_item_sk - and i_category in ('Jewelry', 'Sports', 'Books') - and ss_sold_date_sk = d_date_sk - and d_date between cast('2001-01-12' as date) - and (cast('2001-01-12' as date) + INTERVAL '30 days') -group by - i_item_id - ,i_item_desc - ,i_category - ,i_class - ,i_current_price -order by - i_category - ,i_class - ,i_item_id - ,i_item_desc - ,revenueratio; - - +SELECT + i_item_id, + i_item_desc, + i_category, + i_class, + i_current_price, + sum(ss_ext_sales_price) AS itemrevenue, + sum(ss_ext_sales_price) + * 100 + / sum(sum(ss_ext_sales_price)) OVER (PARTITION BY i_class) AS revenueratio +FROM store_sales, item, date_dim +WHERE + ss_item_sk = i_item_sk + AND i_category IN ('Sports', 'Books', 'Home') + AND ss_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('1999-02-22' AS date) AND ( + cast('1999-02-22' AS date) + INTERVAL '30 days' + ) +GROUP BY i_item_id, i_item_desc, i_category, i_class, i_current_price +ORDER BY i_category, i_class, i_item_id, i_item_desc, revenueratio +; diff --git a/datafusion/core/tests/tpc-ds/99.sql b/datafusion/core/tests/tpc-ds/99.sql index ca47cd2f6541c..53976a431b2f4 100644 --- a/datafusion/core/tests/tpc-ds/99.sql +++ b/datafusion/core/tests/tpc-ds/99.sql @@ -1,36 +1,48 @@ --- Copyright 2015 Transaction Processing Performance Council - -select - substr(w_warehouse_name,1,20) - ,sm_type - ,cc_name - ,sum(case when (cs_ship_date_sk - cs_sold_date_sk <= 30 ) then 1 else 0 end) as '30 days' - ,sum(case when (cs_ship_date_sk - cs_sold_date_sk > 30) and - (cs_ship_date_sk - cs_sold_date_sk <= 60) then 1 else 0 end ) as '31-60 days' - ,sum(case when (cs_ship_date_sk - cs_sold_date_sk > 60) and - (cs_ship_date_sk - cs_sold_date_sk <= 90) then 1 else 0 end) as '61-90 days' - ,sum(case when (cs_ship_date_sk - cs_sold_date_sk > 90) and - (cs_ship_date_sk - cs_sold_date_sk <= 120) then 1 else 0 end) as '91-120 days' - ,sum(case when (cs_ship_date_sk - cs_sold_date_sk > 120) then 1 else 0 end) as '>120 days' -from - catalog_sales - ,warehouse - ,ship_mode - ,call_center - ,date_dim -where - d_month_seq between 1212 and 1212 + 11 -and cs_ship_date_sk = d_date_sk -and cs_warehouse_sk = w_warehouse_sk -and cs_ship_mode_sk = sm_ship_mode_sk -and cs_call_center_sk = cc_call_center_sk -group by - substr(w_warehouse_name,1,20) - ,sm_type - ,cc_name -order by substr(w_warehouse_name,1,20) - ,sm_type - ,cc_name -limit 100; - - +SELECT + substr(w_warehouse_name, 1, 20), + sm_type, + cc_name, + sum( + CASE WHEN (cs_ship_date_sk - cs_sold_date_sk <= 30) THEN 1 ELSE 0 END + ) AS '30 days', + sum( + CASE + WHEN + (cs_ship_date_sk - cs_sold_date_sk > 30) + AND (cs_ship_date_sk - cs_sold_date_sk <= 60) + THEN 1 + ELSE 0 + END + ) AS '31-60 days', + sum( + CASE + WHEN + (cs_ship_date_sk - cs_sold_date_sk > 60) + AND (cs_ship_date_sk - cs_sold_date_sk <= 90) + THEN 1 + ELSE 0 + END + ) AS '61-90 days', + sum( + CASE + WHEN + (cs_ship_date_sk - cs_sold_date_sk > 90) + AND (cs_ship_date_sk - cs_sold_date_sk <= 120) + THEN 1 + ELSE 0 + END + ) AS '91-120 days', + sum( + CASE WHEN (cs_ship_date_sk - cs_sold_date_sk > 120) THEN 1 ELSE 0 END + ) AS '>120 days' +FROM catalog_sales, warehouse, ship_mode, call_center, date_dim +WHERE + d_month_seq BETWEEN 1200 AND 1200 + 11 + AND cs_ship_date_sk = d_date_sk + AND cs_warehouse_sk = w_warehouse_sk + AND cs_ship_mode_sk = sm_ship_mode_sk + AND cs_call_center_sk = cc_call_center_sk +GROUP BY substr(w_warehouse_name, 1, 20), sm_type, cc_name +ORDER BY substr(w_warehouse_name, 1, 20), sm_type, cc_name +LIMIT 100 +;