在oracle中以嵌套的方式使用rank函数



当我试图在一个也使用rank函数的选择结果集上使用rank函数时,我正面临一些与rank函数有关的问题。

sql查询示例:

select a,b,c,
rank() over (partition by d order by d desc) as r_outer
from(
select a,b,c,d from( 
select a,b,c,d,
rank() over (partition by e order by e desc) as r_inner  
from sample
)where r_inner=1
); 

问题:

当我使用上面的查询时,我每次都得到r_outer结果为'1',尽管d的值不同。

样本数据:

<表类>BCDEtbody><<tr>A1B1C111A1B1C121

我不知道你试图完成什么,但是这个逻辑:

rank() over (partition by d order by d desc) 

总是返回1。只有1。为什么?"order by"键与"partition by"键相同。因此,每个分区中只有一个值。并且单个值的秩总是1

也许你想:

rank() over (order by d desc) 

然而,这实际上只是一个猜测,因为你的问题没有提供足够的信息来了解你的意图。

最新更新