oracle SQL rank()或ROW_NUMBER()通过多个分区键

时间:2019-03-19 15:51:15

标签: sql oracle window-functions

我有一个表,该表具有客户群信息(5个因子/字符列),具有division_brand信息(2个因子/字符列)并希望 我可以在每个客户群和Division_brand细分(9列)中按cate_qty和cate_margin对不同的product_category进行排名。请问如何提高排名(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
             )
;

0 个答案:

没有答案