是否可以使用SQL排名函数按以下顺序对数据进行排名

问题描述 投票:0回答:1

我在表中有数据,需要按Brand列进行排序,并按ClassCode更改进行排名。我尝试使用PARTITION BY使用ROW_NUMBER,RANK,DENSE_RANK函数,但未获得所需的结果。

随着ClassCode的更改,等级应该增加,并且我不能将PARTITION BY用于ClassCode,因为它会更改品牌的顺序。

示例表:

Code Brand    ClassCode
101  Sony     201
103  LG       202
104  Nokia    203
107  Sony     201
108  Samsung  202

表数据需要按Brand排序并按ClassCode更改进行排名,如下所示:

所需结果:

Code Brand    ClassCode  rnk
103  LG       202        1
104  Nokia    203        2
108  Samsung  202        3
101  Sony     201        4
107  Sony     201        4
sql function ranking
1个回答
0
投票

您可以使用dense_rank()进行排名,并使用另一列进行排序:

select 
    t.*,
    dense_rank() over(order by ClassCode) rnk
from mytable
order by brand, code
© www.soinside.com 2019 - 2024. All rights reserved.