query47.sql 1.8 KB

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