首页 > 解决方案 > 如何通过语句在分区上向行号添加条件

问题描述

我正在尝试根据总销售额为客户分配顶级商店,然后仅按国家/地区销售额。

我意识到如果我创建一个新的销售领域但只是想节省时间,我可能会得到这个。想法?

有关我正在使用的代码,请参见下文

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

标签: sqlhiverowcasepartition

解决方案


在第二种情况下,您需要一个 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

推荐阅读