sql—如何在partition by语句上向行号添加条件

5w9g7ksd  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(490)

我试着根据总销售额,然后仅仅根据国家销售额,给客户分配一个顶级商店。
我意识到,如果我创建一个新的销售领域,但只是为了节省时间,我可能会得到这个。思想?
下面是我使用的代码

select client_id
      ,region
      ,country
      ,row_number() over(partition by clientid order by sales desc) as rank
      ,case when region='US' then row_number() over(partition by sas_id order by  sales desc) else 0 end as usrank

ClientID Region Store   sales   Rank    USRank1 USRank 2
A        US     20      100     2       2       1
B        US     30      5       6       6       2
C        CA     100     20      4       0       0
D        CA     120     10      5       0       0
E        MX     200     300     1       0       0
F        MX     230     50      3       0       0
wf82jlnq

wf82jlnq1#

您需要一个sum(),在第二种情况下按国家分组。

SELECT client_id,
       region,
       country,
       ROW_NUMBER () OVER (PARTITION BY clientid ORDER BY sales DESC) AS RANK,
       sum (sales) OVER (PARTITION BY clientid ORDER BY sales DESC) as CNTRY_RANK

相关问题