query64.sql 6.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. select cs1.product_name ,cs1.store_name ,cs1.store_zip ,cs1.b_street_number ,cs1.b_streen_name ,cs1.b_city
  2. ,cs1.b_zip ,cs1.c_street_number ,cs1.c_street_name ,cs1.c_city ,cs1.c_zip ,cs1.syear ,cs1.cnt
  3. ,cs1.s1 ,cs1.s2 ,cs1.s3
  4. ,cs2.s1 ,cs2.s2 ,cs2.s3 ,cs2.syear ,cs2.cnt
  5. from
  6. (select i_product_name as product_name ,i_item_sk as item_sk ,s_store_name as store_name
  7. ,s_zip as store_zip ,ad1.ca_street_number as b_street_number ,ad1.ca_street_name as b_streen_name
  8. ,ad1.ca_city as b_city ,ad1.ca_zip as b_zip ,ad2.ca_street_number as c_street_number
  9. ,ad2.ca_street_name as c_street_name ,ad2.ca_city as c_city ,ad2.ca_zip as c_zip
  10. ,d1.d_year as syear ,d2.d_year as fsyear ,d3.d_year as s2year ,count(*) as cnt
  11. ,sum(ss_wholesale_cost) as s1 ,sum(ss_list_price) as s2 ,sum(ss_coupon_amt) as s3
  12. FROM store_sales
  13. JOIN store_returns ON store_sales.ss_item_sk = store_returns.sr_item_sk and store_sales.ss_ticket_number = store_returns.sr_ticket_number
  14. JOIN customer ON store_sales.ss_customer_sk = customer.c_customer_sk
  15. JOIN date_dim d1 ON store_sales.ss_sold_date_sk = d1.d_date_sk
  16. JOIN date_dim d2 ON customer.c_first_sales_date_sk = d2.d_date_sk
  17. JOIN date_dim d3 ON customer.c_first_shipto_date_sk = d3.d_date_sk
  18. JOIN store ON store_sales.ss_store_sk = store.s_store_sk
  19. JOIN customer_demographics cd1 ON store_sales.ss_cdemo_sk= cd1.cd_demo_sk
  20. JOIN customer_demographics cd2 ON customer.c_current_cdemo_sk = cd2.cd_demo_sk
  21. JOIN promotion ON store_sales.ss_promo_sk = promotion.p_promo_sk
  22. JOIN household_demographics hd1 ON store_sales.ss_hdemo_sk = hd1.hd_demo_sk
  23. JOIN household_demographics hd2 ON customer.c_current_hdemo_sk = hd2.hd_demo_sk
  24. JOIN customer_address ad1 ON store_sales.ss_addr_sk = ad1.ca_address_sk
  25. JOIN customer_address ad2 ON customer.c_current_addr_sk = ad2.ca_address_sk
  26. JOIN income_band ib1 ON hd1.hd_income_band_sk = ib1.ib_income_band_sk
  27. JOIN income_band ib2 ON hd2.hd_income_band_sk = ib2.ib_income_band_sk
  28. JOIN item ON store_sales.ss_item_sk = item.i_item_sk
  29. JOIN
  30. (select cs_item_sk
  31. ,sum(cs_ext_list_price) as sale,sum(cr_refunded_cash+cr_reversed_charge+cr_store_credit) as refund
  32. from catalog_sales JOIN catalog_returns
  33. ON catalog_sales.cs_item_sk = catalog_returns.cr_item_sk
  34. and catalog_sales.cs_order_number = catalog_returns.cr_order_number
  35. group by cs_item_sk
  36. having sum(cs_ext_list_price)>2*sum(cr_refunded_cash+cr_reversed_charge+cr_store_credit)) cs_ui
  37. ON store_sales.ss_item_sk = cs_ui.cs_item_sk
  38. WHERE
  39. cd1.cd_marital_status <> cd2.cd_marital_status and
  40. i_color in ('maroon','burnished','dim','steel','navajo','chocolate') and
  41. i_current_price between 35 and 35 + 10 and
  42. i_current_price between 35 + 1 and 35 + 15
  43. and ss_sold_date between '2000-01-01' and '2000-12-31'
  44. group by i_product_name ,i_item_sk ,s_store_name ,s_zip ,ad1.ca_street_number
  45. ,ad1.ca_street_name ,ad1.ca_city ,ad1.ca_zip ,ad2.ca_street_number
  46. ,ad2.ca_street_name ,ad2.ca_city ,ad2.ca_zip ,d1.d_year ,d2.d_year ,d3.d_year
  47. ) cs1
  48. JOIN
  49. (select i_product_name as product_name ,i_item_sk as item_sk ,s_store_name as store_name
  50. ,s_zip as store_zip ,ad1.ca_street_number as b_street_number ,ad1.ca_street_name as b_streen_name
  51. ,ad1.ca_city as b_city ,ad1.ca_zip as b_zip ,ad2.ca_street_number as c_street_number
  52. ,ad2.ca_street_name as c_street_name ,ad2.ca_city as c_city ,ad2.ca_zip as c_zip
  53. ,d1.d_year as syear ,d2.d_year as fsyear ,d3.d_year as s2year ,count(*) as cnt
  54. ,sum(ss_wholesale_cost) as s1 ,sum(ss_list_price) as s2 ,sum(ss_coupon_amt) as s3
  55. FROM store_sales
  56. JOIN store_returns ON store_sales.ss_item_sk = store_returns.sr_item_sk and store_sales.ss_ticket_number = store_returns.sr_ticket_number
  57. JOIN customer ON store_sales.ss_customer_sk = customer.c_customer_sk
  58. JOIN date_dim d1 ON store_sales.ss_sold_date_sk = d1.d_date_sk
  59. JOIN date_dim d2 ON customer.c_first_sales_date_sk = d2.d_date_sk
  60. JOIN date_dim d3 ON customer.c_first_shipto_date_sk = d3.d_date_sk
  61. JOIN store ON store_sales.ss_store_sk = store.s_store_sk
  62. JOIN customer_demographics cd1 ON store_sales.ss_cdemo_sk= cd1.cd_demo_sk
  63. JOIN customer_demographics cd2 ON customer.c_current_cdemo_sk = cd2.cd_demo_sk
  64. JOIN promotion ON store_sales.ss_promo_sk = promotion.p_promo_sk
  65. JOIN household_demographics hd1 ON store_sales.ss_hdemo_sk = hd1.hd_demo_sk
  66. JOIN household_demographics hd2 ON customer.c_current_hdemo_sk = hd2.hd_demo_sk
  67. JOIN customer_address ad1 ON store_sales.ss_addr_sk = ad1.ca_address_sk
  68. JOIN customer_address ad2 ON customer.c_current_addr_sk = ad2.ca_address_sk
  69. JOIN income_band ib1 ON hd1.hd_income_band_sk = ib1.ib_income_band_sk
  70. JOIN income_band ib2 ON hd2.hd_income_band_sk = ib2.ib_income_band_sk
  71. JOIN item ON store_sales.ss_item_sk = item.i_item_sk
  72. JOIN
  73. (select cs_item_sk
  74. ,sum(cs_ext_list_price) as sale,sum(cr_refunded_cash+cr_reversed_charge+cr_store_credit) as refund
  75. from catalog_sales JOIN catalog_returns
  76. ON catalog_sales.cs_item_sk = catalog_returns.cr_item_sk
  77. and catalog_sales.cs_order_number = catalog_returns.cr_order_number
  78. group by cs_item_sk
  79. having sum(cs_ext_list_price)>2*sum(cr_refunded_cash+cr_reversed_charge+cr_store_credit)) cs_ui
  80. ON store_sales.ss_item_sk = cs_ui.cs_item_sk
  81. WHERE
  82. cd1.cd_marital_status <> cd2.cd_marital_status and
  83. i_color in ('maroon','burnished','dim','steel','navajo','chocolate') and
  84. i_current_price between 35 and 35 + 10 and
  85. i_current_price between 35 + 1 and 35 + 15
  86. and ss_sold_date between '2001-01-01' and '2001-12-31'
  87. group by i_product_name ,i_item_sk ,s_store_name ,s_zip ,ad1.ca_street_number
  88. ,ad1.ca_street_name ,ad1.ca_city ,ad1.ca_zip ,ad2.ca_street_number
  89. ,ad2.ca_street_name ,ad2.ca_city ,ad2.ca_zip ,d1.d_year ,d2.d_year ,d3.d_year
  90. ) cs2
  91. ON cs1.item_sk=cs2.item_sk
  92. where
  93. cs1.syear = 2000 and
  94. cs2.syear = 2000 + 1 and
  95. cs2.cnt <= cs1.cnt and
  96. cs1.store_name = cs2.store_name and
  97. cs1.store_zip = cs2.store_zip
  98. order by cs1.product_name ,cs1.store_name ,cs2.cnt;