query39.sql 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. select inv1.w_warehouse_sk,inv1.i_item_sk,inv1.d_moy,inv1.mean, inv1.cov
  2. ,inv2.w_warehouse_sk,inv2.i_item_sk,inv2.d_moy,inv2.mean, inv2.cov
  3. from
  4. (select w_warehouse_name,w_warehouse_sk,i_item_sk,d_moy
  5. ,stdev,mean, case mean when cast (0 as double) then null else stdev/mean end cov
  6. from(select w_warehouse_name,w_warehouse_sk,i_item_sk,d_moy
  7. ,stddev_samp(inv_quantity_on_hand) stdev,avg(inv_quantity_on_hand) mean
  8. from inventory
  9. JOIN item ON inventory.inv_item_sk = item.i_item_sk
  10. JOIN warehouse ON inventory.inv_warehouse_sk = warehouse.w_warehouse_sk
  11. JOIN date_dim ON inventory.inv_date_sk = date_dim.d_date_sk
  12. where
  13. d_year =2000
  14. and inv_date between '2000-01-01' and '2000-12-31'
  15. group by w_warehouse_name,w_warehouse_sk,i_item_sk,d_moy) foo
  16. where case mean when cast (0 as double) then cast (0 as double) else stdev/mean end > 1) inv1
  17. JOIN
  18. (select w_warehouse_name,w_warehouse_sk,i_item_sk,d_moy
  19. ,stdev,mean, case mean when cast (0 as double) then null else stdev/mean end cov
  20. from(select w_warehouse_name,w_warehouse_sk,i_item_sk,d_moy
  21. ,stddev_samp(inv_quantity_on_hand) stdev,avg(inv_quantity_on_hand) mean
  22. from inventory
  23. JOIN item ON inventory.inv_item_sk = item.i_item_sk
  24. JOIN warehouse ON inventory.inv_warehouse_sk = warehouse.w_warehouse_sk
  25. JOIN date_dim ON inventory.inv_date_sk = date_dim.d_date_sk
  26. where
  27. d_year =2000
  28. and inv_date between '2000-01-01' and '2000-12-31'
  29. group by w_warehouse_name,w_warehouse_sk,i_item_sk,d_moy) foo
  30. where case mean when cast (0 as double) then cast (0 as double) else stdev/mean end > 1) inv2
  31. ON
  32. inv1.i_item_sk = inv2.i_item_sk
  33. and inv1.w_warehouse_sk = inv2.w_warehouse_sk
  34. where
  35. inv1.d_moy=1
  36. and inv2.d_moy=1+1
  37. order by inv1.w_warehouse_sk,inv1.i_item_sk,inv1.d_moy,inv1.mean,inv1.cov
  38. ,inv2.d_moy,inv2.mean, inv2.cov;