q51.sql 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. --!syntax_pg
  2. --TPC-DS Q51
  3. -- start query 1 in stream 0 using template ../query_templates/query51.tpl
  4. WITH web_v1 as (
  5. select
  6. ws_item_sk item_sk, d_date,
  7. sum(sum(ws_sales_price))
  8. over (partition by ws_item_sk order by d_date rows between unbounded preceding and current row) cume_sales
  9. from plato.web_sales
  10. ,plato.date_dim
  11. where ws_sold_date_sk=d_date_sk
  12. and d_month_seq between 1212 and 1212+11
  13. and ws_item_sk is not NULL
  14. group by ws_item_sk, d_date),
  15. store_v1 as (
  16. select
  17. ss_item_sk item_sk, d_date,
  18. sum(sum(ss_sales_price))
  19. over (partition by ss_item_sk order by d_date rows between unbounded preceding and current row) cume_sales
  20. from plato.store_sales
  21. ,plato.date_dim
  22. where ss_sold_date_sk=d_date_sk
  23. and d_month_seq between 1212 and 1212+11
  24. and ss_item_sk is not NULL
  25. group by ss_item_sk, d_date)
  26. select *
  27. from (select item_sk
  28. ,d_date
  29. ,web_sales
  30. ,store_sales
  31. ,max(web_sales)
  32. over (partition by item_sk order by d_date rows between unbounded preceding and current row) web_cumulative
  33. ,max(store_sales)
  34. over (partition by item_sk order by d_date rows between unbounded preceding and current row) store_cumulative
  35. from (select case when web.item_sk is not null then web.item_sk else store.item_sk end item_sk
  36. ,case when web.d_date is not null then web.d_date else store.d_date end d_date
  37. ,web.cume_sales web_sales
  38. ,store.cume_sales store_sales
  39. from web_v1 web full outer join store_v1 store on (web.item_sk = store.item_sk
  40. and web.d_date = store.d_date)
  41. )x )y
  42. where web_cumulative > store_cumulative
  43. order by item_sk
  44. ,d_date
  45. limit 100;
  46. -- end query 1 in stream 0 using template ../query_templates/query51.tpl