q39b.sql 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. WITH inv AS
  2. (SELECT
  3. w_warehouse_name,
  4. w_warehouse_sk,
  5. i_item_sk,
  6. d_moy,
  7. stdev,
  8. mean,
  9. CASE mean
  10. WHEN 0
  11. THEN NULL
  12. ELSE stdev / mean END cov
  13. FROM (SELECT
  14. w_warehouse_name,
  15. w_warehouse_sk,
  16. i_item_sk,
  17. d_moy,
  18. stddev_samp(inv_quantity_on_hand) stdev,
  19. avg(inv_quantity_on_hand) mean
  20. FROM inventory, item, warehouse, date_dim
  21. WHERE inv_item_sk = i_item_sk
  22. AND inv_warehouse_sk = w_warehouse_sk
  23. AND inv_date_sk = d_date_sk
  24. AND d_year = 2001
  25. GROUP BY w_warehouse_name, w_warehouse_sk, i_item_sk, d_moy) foo
  26. WHERE CASE mean
  27. WHEN 0
  28. THEN 0
  29. ELSE stdev / mean END > 1)
  30. SELECT
  31. inv1.w_warehouse_sk,
  32. inv1.i_item_sk,
  33. inv1.d_moy,
  34. inv1.mean,
  35. inv1.cov,
  36. inv2.w_warehouse_sk,
  37. inv2.i_item_sk,
  38. inv2.d_moy,
  39. inv2.mean,
  40. inv2.cov
  41. FROM inv inv1, inv inv2
  42. WHERE inv1.i_item_sk = inv2.i_item_sk
  43. AND inv1.w_warehouse_sk = inv2.w_warehouse_sk
  44. AND inv1.d_moy = 1
  45. AND inv2.d_moy = 1 + 1
  46. AND inv1.cov > 1.5
  47. ORDER BY inv1.w_warehouse_sk, inv1.i_item_sk, inv1.d_moy, inv1.mean, inv1.cov
  48. , inv2.d_moy, inv2.mean, inv2.cov