q39.sql 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. --!syntax_pg
  2. --TPC-DS Q39
  3. -- start query 1 in stream 0 using template ../query_templates/query39.tpl
  4. with inv as
  5. (select w_warehouse_name,w_warehouse_sk,i_item_sk,d_moy
  6. ,stdev,mean, case mean when 0::numeric then null::numeric else stdev/mean end cov
  7. from(select w_warehouse_name,w_warehouse_sk,i_item_sk,d_moy
  8. ,stddev_samp(inv_quantity_on_hand) stdev,avg(inv_quantity_on_hand) mean
  9. from plato.inventory
  10. ,plato.item
  11. ,plato.warehouse
  12. ,plato.date_dim
  13. where inv_item_sk = i_item_sk
  14. and inv_warehouse_sk = w_warehouse_sk
  15. and inv_date_sk = d_date_sk
  16. and d_year =1998
  17. group by w_warehouse_name,w_warehouse_sk,i_item_sk,d_moy) foo
  18. where case mean when 0::numeric then 0::numeric else stdev/mean end > 1::numeric)
  19. select inv1.w_warehouse_sk as inv1_w_warehouse_sk,inv1.i_item_sk as inv1_i_item_sk,inv1.d_moy as inv1_d_moy,inv1.mean as inv1_mean, inv1.cov as inv1_cov
  20. ,inv2.w_warehouse_sk as inv2_w_warehouse_sk,inv2.i_item_sk as inv2_i_item_sk,inv2.d_moy as inv2_d_moy,inv2.mean as inv2_mean, inv2.cov as inv2_cov
  21. from inv inv1,inv inv2
  22. where inv1.i_item_sk = inv2.i_item_sk
  23. and inv1.w_warehouse_sk = inv2.w_warehouse_sk
  24. and inv1.d_moy=4
  25. and inv2.d_moy=4+1
  26. order by inv1_w_warehouse_sk,inv1_i_item_sk,inv1_d_moy,inv1_mean,inv1_cov
  27. ,inv2_d_moy,inv2_mean, inv2_cov
  28. ;
  29. with inv as
  30. (select w_warehouse_name,w_warehouse_sk,i_item_sk,d_moy
  31. ,stdev,mean, case mean when 0::numeric then null::numeric else stdev/mean end cov
  32. from(select w_warehouse_name,w_warehouse_sk,i_item_sk,d_moy
  33. ,stddev_samp(inv_quantity_on_hand) stdev,avg(inv_quantity_on_hand) mean
  34. from plato.inventory
  35. ,plato.item
  36. ,plato.warehouse
  37. ,plato.date_dim
  38. where inv_item_sk = i_item_sk
  39. and inv_warehouse_sk = w_warehouse_sk
  40. and inv_date_sk = d_date_sk
  41. and d_year =1998
  42. group by w_warehouse_name,w_warehouse_sk,i_item_sk,d_moy) foo
  43. where case mean when 0::numeric then 0::numeric else stdev/mean end > 1::numeric)
  44. select inv1.w_warehouse_sk as inv1_w_warehouse_sk,inv1.i_item_sk as inv1_i_item_sk,inv1.d_moy as inv1_d_moy,inv1.mean as inv1_mean, inv1.cov as inv1_cov
  45. ,inv2.w_warehouse_sk as inv2_w_warehouse_sk,inv2.i_item_sk as inv2_i_item_sk,inv2.d_moy as inv2_d_moy,inv2.mean as inv2_mean, inv2.cov as inv2_cov
  46. from inv inv1,inv inv2
  47. where inv1.i_item_sk = inv2.i_item_sk
  48. and inv1.w_warehouse_sk = inv2.w_warehouse_sk
  49. and inv1.d_moy=4
  50. and inv2.d_moy=4+1
  51. and inv1.cov > 1.5::numeric
  52. order by inv1_w_warehouse_sk,inv1_i_item_sk,inv1_d_moy,inv1_mean,inv1_cov
  53. ,inv2_d_moy,inv2_mean, inv2_cov
  54. ;
  55. -- end query 1 in stream 0 using template ../query_templates/query39.tpl