q64.sql 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. --!syntax_pg
  2. --TPC-DS Q64
  3. -- start query 1 in stream 0 using template ../query_templates/query64.tpl
  4. with cs_ui as
  5. (select cs_item_sk
  6. ,sum(cs_ext_list_price) as sale,sum(cr_refunded_cash+cr_reversed_charge+cr_store_credit) as refund
  7. from plato.catalog_sales
  8. ,plato.catalog_returns
  9. where cs_item_sk = cr_item_sk
  10. and cs_order_number = cr_order_number
  11. group by cs_item_sk
  12. having sum(cs_ext_list_price)>2::numeric*sum(cr_refunded_cash+cr_reversed_charge+cr_store_credit)),
  13. cross_sales as
  14. (select 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_street_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 plato.store_sales
  34. ,plato.store_returns
  35. ,cs_ui
  36. ,plato.date_dim d1
  37. ,plato.date_dim d2
  38. ,plato.date_dim d3
  39. ,plato.store
  40. ,plato.customer
  41. ,plato.customer_demographics cd1
  42. ,plato.customer_demographics cd2
  43. ,plato.promotion
  44. ,plato.household_demographics hd1
  45. ,plato.household_demographics hd2
  46. ,plato.customer_address ad1
  47. ,plato.customer_address ad2
  48. ,plato.income_band ib1
  49. ,plato.income_band ib2
  50. ,plato.item
  51. WHERE ss_store_sk = s_store_sk AND
  52. ss_sold_date_sk = d1.d_date_sk AND
  53. ss_customer_sk = c_customer_sk AND
  54. ss_cdemo_sk= cd1.cd_demo_sk AND
  55. ss_hdemo_sk = hd1.hd_demo_sk AND
  56. ss_addr_sk = ad1.ca_address_sk and
  57. ss_item_sk = i_item_sk and
  58. ss_item_sk = sr_item_sk and
  59. ss_ticket_number = sr_ticket_number and
  60. ss_item_sk = cs_ui.cs_item_sk and
  61. c_current_cdemo_sk = cd2.cd_demo_sk AND
  62. c_current_hdemo_sk = hd2.hd_demo_sk AND
  63. c_current_addr_sk = ad2.ca_address_sk and
  64. c_first_sales_date_sk = d2.d_date_sk and
  65. c_first_shipto_date_sk = d3.d_date_sk and
  66. ss_promo_sk = p_promo_sk and
  67. hd1.hd_income_band_sk = ib1.ib_income_band_sk and
  68. hd2.hd_income_band_sk = ib2.ib_income_band_sk and
  69. cd1.cd_marital_status <> cd2.cd_marital_status and
  70. i_color in ('maroon','burnished','dim','steel','navajo','chocolate') and
  71. i_current_price between 35::numeric and (35 + 10)::numeric and
  72. i_current_price between (35 + 1)::numeric and (35 + 15)::numeric
  73. group by i_product_name
  74. ,i_item_sk
  75. ,s_store_name
  76. ,s_zip
  77. ,ad1.ca_street_number
  78. ,ad1.ca_street_name
  79. ,ad1.ca_city
  80. ,ad1.ca_zip
  81. ,ad2.ca_street_number
  82. ,ad2.ca_street_name
  83. ,ad2.ca_city
  84. ,ad2.ca_zip
  85. ,d1.d_year
  86. ,d2.d_year
  87. ,d3.d_year
  88. )
  89. select cs1.product_name
  90. ,cs1.store_name
  91. ,cs1.store_zip
  92. ,cs1.b_street_number
  93. ,cs1.b_street_name
  94. ,cs1.b_city
  95. ,cs1.b_zip
  96. ,cs1.c_street_number
  97. ,cs1.c_street_name
  98. ,cs1.c_city
  99. ,cs1.c_zip
  100. ,cs1.syear as cs1_syear
  101. ,cs1.cnt as cs1_cnt
  102. ,cs1.s1 as s11
  103. ,cs1.s2 as s21
  104. ,cs1.s3 as s31
  105. ,cs2.s1 as s12
  106. ,cs2.s2 as s22
  107. ,cs2.s3 as s32
  108. ,cs2.syear as cs2_syear
  109. ,cs2.cnt as cs2_cnt
  110. from cross_sales cs1,cross_sales cs2
  111. where cs1.item_sk=cs2.item_sk and
  112. cs1.syear = 2000 and
  113. cs2.syear = 2000 + 1 and
  114. cs2.cnt <= cs1.cnt and
  115. cs1.store_name = cs2.store_name and
  116. cs1.store_zip = cs2.store_zip
  117. order by cs1.product_name
  118. ,cs1.store_name
  119. ,cs2_cnt
  120. ,cs1.s1
  121. ,cs2.s1;
  122. -- end query 1 in stream 0 using template ../query_templates/query64.tpl