q89.sql 1.0 KB

123456789101112131415161718192021222324252627282930
  1. SELECT *
  2. FROM (
  3. SELECT
  4. i_category,
  5. i_class,
  6. i_brand,
  7. s_store_name,
  8. s_company_name,
  9. d_moy,
  10. sum(ss_sales_price) sum_sales,
  11. avg(sum(ss_sales_price))
  12. OVER
  13. (PARTITION BY i_category, i_brand, s_store_name, s_company_name)
  14. avg_monthly_sales
  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. d_year IN (1999) AND
  20. ((i_category IN ('Books', 'Electronics', 'Sports') AND
  21. i_class IN ('computers', 'stereo', 'football'))
  22. OR (i_category IN ('Men', 'Jewelry', 'Women') AND
  23. i_class IN ('shirts', 'birdal', 'dresses')))
  24. GROUP BY i_category, i_class, i_brand,
  25. s_store_name, s_company_name, d_moy) tmp1
  26. WHERE CASE WHEN (avg_monthly_sales <> 0)
  27. THEN (abs(sum_sales - avg_monthly_sales) / avg_monthly_sales)
  28. ELSE NULL END > 0.1
  29. ORDER BY sum_sales - avg_monthly_sales, s_store_name
  30. LIMIT 100