--
-- Licensed to the Apache Software Foundation (ASF) under one or more
-- contributor license agreements.  See the NOTICE file distributed with
-- this work for additional information regarding copyright ownership.
-- The ASF licenses this file to You under the Apache License, Version 2.0
-- (the "License"); you may not use this file except in compliance with
-- the License.  You may obtain a copy of the License at
--
--    http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
--
-- q70 --
select
       sum(ss_net_profit) as total_sum,
       s_state,
       s_county,
       grouping (s_state) + grouping (s_county) as lochierarchy,
       rank() over (
              partition by grouping (s_state) + grouping (s_county),
              case
                     when grouping (s_county) = 0 then s_state
              end
              order by
                     sum(ss_net_profit) desc
       ) as rank_within_parent
from
       store_sales,
       date_dim d1,
       store
where
       d1.d_month_seq between 1212
       and 1212 + 11
       and d1.d_date_sk = ss_sold_date_sk
       and s_store_sk = ss_store_sk
       and s_state in (
              select
                     s_state
              from
                     (
                            select
                                   s_state as s_state,
                                   rank() over (
                                          partition by s_state
                                          order by
                                                 sum(ss_net_profit) desc
                                   ) as ranking
                            from
                                   store_sales,
                                   store,
                                   date_dim
                            where
                                   d_month_seq between 1212
                                   and 1212 + 11
                                   and d_date_sk = ss_sold_date_sk
                                   and s_store_sk = ss_store_sk
                            group by
                                   s_state
                     ) tmp1
              where
                     ranking <= 5
       )
group by
       rollup (s_state, s_county)
order by
       lochierarchy desc,
       case
              when lochierarchy = 0 then s_state
       end,
       rank_within_parent
limit
       100;
