oracle 多字段排名

在Oracle中实现多字段排名,可以使用ROW_NUMBER()函数结合ORDER BY子句。以下是一个示例,假设我们有一个名为sales_data的表,它包含year, regionsales字段,我们想要按yearregion进行排名。

SELECT year, region, sales,
       ROW_NUMBER() OVER (PARTITION BY year, region ORDER BY sales DESC) AS rank
FROM sales_data;

在这个查询中,PARTITION BY year, region告诉Oracle按照yearregion字段进行分组,在每个分组内部根据sales字段降序排列。ROW_NUMBER()函数为每个分组内的记录分配一个唯一的排名。