q58.sql 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. --!syntax_pg
  2. --TPC-DS Q58
  3. -- start query 1 in stream 0 using template ../query_templates/query58.tpl
  4. with ss_items as
  5. (select i_item_id item_id
  6. ,sum(ss_ext_sales_price) ss_item_rev
  7. from plato.store_sales
  8. ,plato.item
  9. ,plato.date_dim
  10. where ss_item_sk = i_item_sk
  11. and d_date in (select d_date
  12. from plato.date_dim
  13. where d_week_seq = (select d_week_seq
  14. from plato.date_dim
  15. where d_date = '1998-02-19'::date))
  16. and ss_sold_date_sk = d_date_sk
  17. group by i_item_id),
  18. cs_items as
  19. (select i_item_id item_id
  20. ,sum(cs_ext_sales_price) cs_item_rev
  21. from plato.catalog_sales
  22. ,plato.item
  23. ,plato.date_dim
  24. where cs_item_sk = i_item_sk
  25. and d_date in (select d_date
  26. from plato.date_dim
  27. where d_week_seq = (select d_week_seq
  28. from plato.date_dim
  29. where d_date = '1998-02-19'::date))
  30. and cs_sold_date_sk = d_date_sk
  31. group by i_item_id),
  32. ws_items as
  33. (select i_item_id item_id
  34. ,sum(ws_ext_sales_price) ws_item_rev
  35. from plato.web_sales
  36. ,plato.item
  37. ,plato.date_dim
  38. where ws_item_sk = i_item_sk
  39. and d_date in (select d_date
  40. from plato.date_dim
  41. where d_week_seq =(select d_week_seq
  42. from plato.date_dim
  43. where d_date = '1998-02-19'::date))
  44. and ws_sold_date_sk = d_date_sk
  45. group by i_item_id)
  46. select ss_items.item_id
  47. ,ss_item_rev
  48. ,ss_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3::numeric) * 100::numeric ss_dev
  49. ,cs_item_rev
  50. ,cs_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3::numeric) * 100::numeric cs_dev
  51. ,ws_item_rev
  52. ,ws_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3::numeric) * 100::numeric ws_dev
  53. ,(ss_item_rev+cs_item_rev+ws_item_rev)/3::numeric average
  54. from ss_items,cs_items,ws_items
  55. where ss_items.item_id=cs_items.item_id
  56. and ss_items.item_id=ws_items.item_id
  57. and ss_item_rev between 0.9::numeric * cs_item_rev and 1.1::numeric * cs_item_rev
  58. and ss_item_rev between 0.9::numeric * ws_item_rev and 1.1::numeric * ws_item_rev
  59. and cs_item_rev between 0.9::numeric * ss_item_rev and 1.1::numeric * ss_item_rev
  60. and cs_item_rev between 0.9::numeric * ws_item_rev and 1.1::numeric * ws_item_rev
  61. and ws_item_rev between 0.9::numeric * ss_item_rev and 1.1::numeric * ss_item_rev
  62. and ws_item_rev between 0.9::numeric * cs_item_rev and 1.1::numeric * cs_item_rev
  63. order by item_id
  64. ,ss_item_rev
  65. limit 100;
  66. -- end query 1 in stream 0 using template ../query_templates/query58.tpl