q47.sql 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. --!syntax_pg
  2. --TPC-DS Q47
  3. -- start query 1 in stream 0 using template ../query_templates/query47.tpl
  4. with v1 as(
  5. select i_category, i_brand,
  6. s_store_name, s_company_name,
  7. d_year, d_moy,
  8. sum(ss_sales_price) sum_sales,
  9. avg(sum(ss_sales_price)) over
  10. (partition by i_category, i_brand,
  11. s_store_name, s_company_name, d_year)
  12. avg_monthly_sales,
  13. rank() over
  14. (partition by i_category, i_brand,
  15. s_store_name, s_company_name
  16. order by d_year, d_moy) rn
  17. from plato.item, plato.store_sales, plato.date_dim, plato.store
  18. where ss_item_sk = i_item_sk and
  19. ss_sold_date_sk = d_date_sk and
  20. ss_store_sk = s_store_sk and
  21. (
  22. d_year = 2000 or
  23. ( d_year = 2000-1 and d_moy =12) or
  24. ( d_year = 2000+1 and d_moy =1)
  25. )
  26. group by i_category, i_brand,
  27. s_store_name, s_company_name,
  28. d_year, d_moy),
  29. v2 as(
  30. select v1.i_category, v1.i_brand
  31. ,v1.d_year, v1.d_moy
  32. ,v1.avg_monthly_sales
  33. ,v1.sum_sales, v1_lag.sum_sales psum, v1_lead.sum_sales nsum
  34. from v1, v1 v1_lag, v1 v1_lead
  35. where v1.i_category = v1_lag.i_category and
  36. v1.i_category = v1_lead.i_category and
  37. v1.i_brand = v1_lag.i_brand and
  38. v1.i_brand = v1_lead.i_brand and
  39. v1.s_store_name = v1_lag.s_store_name and
  40. v1.s_store_name = v1_lead.s_store_name and
  41. v1.s_company_name = v1_lag.s_company_name and
  42. v1.s_company_name = v1_lead.s_company_name and
  43. v1.rn = v1_lag.rn + 1 and
  44. v1.rn = v1_lead.rn - 1)
  45. select *
  46. from v2
  47. where d_year = 2000 and
  48. avg_monthly_sales > 0::numeric and
  49. case when avg_monthly_sales > 0::numeric then abs(sum_sales - avg_monthly_sales) / avg_monthly_sales else null::numeric end > 0.1::numeric
  50. order by sum_sales - avg_monthly_sales, nsum
  51. limit 100;
  52. -- end query 1 in stream 0 using template ../query_templates/query47.tpl