q72.sql 1.2 KB

123456789101112131415161718192021222324252627282930313233
  1. SELECT
  2. i_item_desc,
  3. w_warehouse_name,
  4. d1.d_week_seq,
  5. count(CASE WHEN p_promo_sk IS NULL
  6. THEN 1
  7. ELSE 0 END) no_promo,
  8. count(CASE WHEN p_promo_sk IS NOT NULL
  9. THEN 1
  10. ELSE 0 END) promo,
  11. count(*) total_cnt
  12. FROM catalog_sales
  13. JOIN inventory ON (cs_item_sk = inv_item_sk)
  14. JOIN warehouse ON (w_warehouse_sk = inv_warehouse_sk)
  15. JOIN item ON (i_item_sk = cs_item_sk)
  16. JOIN customer_demographics ON (cs_bill_cdemo_sk = cd_demo_sk)
  17. JOIN household_demographics ON (cs_bill_hdemo_sk = hd_demo_sk)
  18. JOIN date_dim d1 ON (cs_sold_date_sk = d1.d_date_sk)
  19. JOIN date_dim d2 ON (inv_date_sk = d2.d_date_sk)
  20. JOIN date_dim d3 ON (cs_ship_date_sk = d3.d_date_sk)
  21. LEFT OUTER JOIN promotion ON (cs_promo_sk = p_promo_sk)
  22. LEFT OUTER JOIN catalog_returns ON (cr_item_sk = cs_item_sk AND cr_order_number = cs_order_number)
  23. WHERE d1.d_week_seq = d2.d_week_seq
  24. AND inv_quantity_on_hand < cs_quantity
  25. AND d3.d_date > (cast(d1.d_date AS DATE) + interval 5 days)
  26. AND hd_buy_potential = '>10000'
  27. AND d1.d_year = 1999
  28. AND hd_buy_potential = '>10000'
  29. AND cd_marital_status = 'D'
  30. AND d1.d_year = 1999
  31. GROUP BY i_item_desc, w_warehouse_name, d1.d_week_seq
  32. ORDER BY total_cnt DESC, i_item_desc, w_warehouse_name, d_week_seq
  33. LIMIT 100