q64.sql 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. WITH cs_ui AS
  2. (SELECT
  3. cs_item_sk,
  4. sum(cs_ext_list_price) AS sale,
  5. sum(cr_refunded_cash + cr_reversed_charge + cr_store_credit) AS refund
  6. FROM catalog_sales
  7. , catalog_returns
  8. WHERE cs_item_sk = cr_item_sk
  9. AND cs_order_number = cr_order_number
  10. GROUP BY cs_item_sk
  11. HAVING sum(cs_ext_list_price) > 2 * sum(cr_refunded_cash + cr_reversed_charge + cr_store_credit)),
  12. cross_sales AS
  13. (SELECT
  14. i_product_name product_name,
  15. i_item_sk item_sk,
  16. s_store_name store_name,
  17. s_zip store_zip,
  18. ad1.ca_street_number b_street_number,
  19. ad1.ca_street_name b_streen_name,
  20. ad1.ca_city b_city,
  21. ad1.ca_zip b_zip,
  22. ad2.ca_street_number c_street_number,
  23. ad2.ca_street_name c_street_name,
  24. ad2.ca_city c_city,
  25. ad2.ca_zip c_zip,
  26. d1.d_year AS syear,
  27. d2.d_year AS fsyear,
  28. d3.d_year s2year,
  29. count(*) cnt,
  30. sum(ss_wholesale_cost) s1,
  31. sum(ss_list_price) s2,
  32. sum(ss_coupon_amt) s3
  33. FROM store_sales, store_returns, cs_ui, date_dim d1, date_dim d2, date_dim d3,
  34. store, customer, customer_demographics cd1, customer_demographics cd2,
  35. promotion, household_demographics hd1, household_demographics hd2,
  36. customer_address ad1, customer_address ad2, income_band ib1, income_band ib2, item
  37. WHERE ss_store_sk = s_store_sk AND
  38. ss_sold_date_sk = d1.d_date_sk AND
  39. ss_customer_sk = c_customer_sk AND
  40. ss_cdemo_sk = cd1.cd_demo_sk AND
  41. ss_hdemo_sk = hd1.hd_demo_sk AND
  42. ss_addr_sk = ad1.ca_address_sk AND
  43. ss_item_sk = i_item_sk AND
  44. ss_item_sk = sr_item_sk AND
  45. ss_ticket_number = sr_ticket_number AND
  46. ss_item_sk = cs_ui.cs_item_sk AND
  47. c_current_cdemo_sk = cd2.cd_demo_sk AND
  48. c_current_hdemo_sk = hd2.hd_demo_sk AND
  49. c_current_addr_sk = ad2.ca_address_sk AND
  50. c_first_sales_date_sk = d2.d_date_sk AND
  51. c_first_shipto_date_sk = d3.d_date_sk AND
  52. ss_promo_sk = p_promo_sk AND
  53. hd1.hd_income_band_sk = ib1.ib_income_band_sk AND
  54. hd2.hd_income_band_sk = ib2.ib_income_band_sk AND
  55. cd1.cd_marital_status <> cd2.cd_marital_status AND
  56. i_color IN ('purple', 'burlywood', 'indian', 'spring', 'floral', 'medium') AND
  57. i_current_price BETWEEN 64 AND 64 + 10 AND
  58. i_current_price BETWEEN 64 + 1 AND 64 + 15
  59. GROUP BY i_product_name, i_item_sk, s_store_name, s_zip, ad1.ca_street_number,
  60. ad1.ca_street_name, ad1.ca_city, ad1.ca_zip, ad2.ca_street_number,
  61. ad2.ca_street_name, ad2.ca_city, ad2.ca_zip, d1.d_year, d2.d_year, d3.d_year
  62. )
  63. SELECT
  64. cs1.product_name,
  65. cs1.store_name,
  66. cs1.store_zip,
  67. cs1.b_street_number,
  68. cs1.b_streen_name,
  69. cs1.b_city,
  70. cs1.b_zip,
  71. cs1.c_street_number,
  72. cs1.c_street_name,
  73. cs1.c_city,
  74. cs1.c_zip,
  75. cs1.syear,
  76. cs1.cnt,
  77. cs1.s1,
  78. cs1.s2,
  79. cs1.s3,
  80. cs2.s1,
  81. cs2.s2,
  82. cs2.s3,
  83. cs2.syear,
  84. cs2.cnt
  85. FROM cross_sales cs1, cross_sales cs2
  86. WHERE cs1.item_sk = cs2.item_sk AND
  87. cs1.syear = 1999 AND
  88. cs2.syear = 1999 + 1 AND
  89. cs2.cnt <= cs1.cnt AND
  90. cs1.store_name = cs2.store_name AND
  91. cs1.store_zip = cs2.store_zip
  92. ORDER BY cs1.product_name, cs1.store_name, cs2.cnt