oracle SQL rank () или ROW_NUMBER () по нескольким ключам разделов - PullRequest
0 голосов
/ 19 марта 2019

У меня есть таблица с информацией о сегменте клиента (5 столбцов фактора / символа), информация о Division_brand (столбцы 2 фактора / символа) и надеюсь, что я смогу ранжировать разные product_category по cate_qty и cate_margin в каждом сегменте клиента и сегменте Division_brand (9 столбцов)).Могу ли я предложить несколько советов, как сделать ранжирование (rank () или rownumber ()) более эффективным?на самом деле у меня больше измерений в сегменте клиентов с 7 столбцами

, вот пример

create table prod_cate_rank as
select
             gender
           , age_group
           , div1_rev_bucket
           , div2_rev_bucket
           , div3_rev_bucket
           , division_name
           , brand
           , product_category
           , cat_revenue
           , cat_margin
           , cat_qty
           ,ROW_NUMBER()over (partition by 
                                        gender
                                        , age_group
                                        , div1_rev_bucket
                                        , div2_rev_bucket
                                        , div3_rev_bucket
                                        , division_name
                                        , brand
                            order by cat_qty desc, cat_margin desc) as rn
    from seg_product_info

спасибо!Должен ли я использовать любую технику, как: 1.

partition by hash
                     (
                                  division_name
                                 ,brand
                     )
                     partitions 32
                     nologging;

или 2.

partition by hash
             (
                           division_name
                                 ,brand
             )
             partitions 32
             nologging
;

CREATE INDEX core
on
             seg_product_info
             (
                            gender
               , age_group
               , div1_rev_bucket
               , div2_rev_bucket
               , div3_rev_bucket
               , division_name
             )
;
...