SELECT  sum(ws_net_paid)  AS  total_sum  ,
              i_category  ,
              i_class  ,
              grouping(i_category)+grouping(i_class)  AS  lochierarchy  ,
              rank()  OVER  (  PARTITION  BY  grouping(i_category)+grouping(i_class),
                                                                    CASE
                                                                            WHEN  grouping(i_class)  =  0  THEN  i_category
                                                                    END
                                        ORDER  BY  sum(ws_net_paid)  DESC)  AS  rank_within_parent
FROM  web_sales  ,
          date_dim  d1  ,
          item
WHERE  d1.d_month_seq  BETWEEN  1200  AND  1200+11
    AND  d1.d_date_sk  =  ws_sold_date_sk
    AND  i_item_sk  =  ws_item_sk
GROUP  BY  rollup(i_category,i_class)
ORDER  BY  lochierarchy  DESC  NULLS  FIRST,
                  CASE
                          WHEN  grouping(i_category)+grouping(i_class)  =  0  THEN  i_category
                  END  NULLS  FIRST,
                  rank_within_parent  NULLS  FIRST
LIMIT  100;