q70.sql 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. SELECT
  2. sum(ss_net_profit) AS total_sum,
  3. s_state,
  4. s_county,
  5. grouping(s_state) + grouping(s_county) AS lochierarchy,
  6. rank()
  7. OVER (
  8. PARTITION BY grouping(s_state) + grouping(s_county),
  9. CASE WHEN grouping(s_county) = 0
  10. THEN s_state END
  11. ORDER BY sum(ss_net_profit) DESC) AS rank_within_parent
  12. FROM
  13. store_sales, date_dim d1, store
  14. WHERE
  15. d1.d_month_seq BETWEEN 1200 AND 1200 + 11
  16. AND d1.d_date_sk = ss_sold_date_sk
  17. AND s_store_sk = ss_store_sk
  18. AND s_state IN
  19. (SELECT s_state
  20. FROM
  21. (SELECT
  22. s_state AS s_state,
  23. rank()
  24. OVER (PARTITION BY s_state
  25. ORDER BY sum(ss_net_profit) DESC) AS ranking
  26. FROM store_sales, store, date_dim
  27. WHERE d_month_seq BETWEEN 1200 AND 1200 + 11
  28. AND d_date_sk = ss_sold_date_sk
  29. AND s_store_sk = ss_store_sk
  30. GROUP BY s_state) tmp1
  31. WHERE ranking <= 5)
  32. GROUP BY ROLLUP (s_state, s_county)
  33. ORDER BY
  34. lochierarchy DESC
  35. , CASE WHEN lochierarchy = 0
  36. THEN s_state END
  37. , rank_within_parent
  38. LIMIT 100