在Oracle中选择N行
假设我们有以下数据:在Oracle中选择N行,oracle,rank,dense-rank,Oracle,Rank,Dense Rank,假设我们有以下数据: Key Value Desired Rank --- ----- ------------ P1 0.6 2 P1 0.6 2 P1 0.6 2 P2 0.8 1 P2 0.8 1 P3 0.6 3 P3 0.6 3 我想选择按值描述排序的不同键以显示在支
Key Value Desired Rank
--- ----- ------------
P1 0.6 2
P1 0.6 2
P1 0.6 2
P2 0.8 1
P2 0.8 1
P3 0.6 3
P3 0.6 3
我想选择按值描述排序的不同键以显示在支持分页的网格中
我不知道如何生成秩作为所需秩列中显示的值。这样我就可以在数据集上正确分页 当我尝试使用:densed_RANK()OVER(ORDER BY value)时,结果是
Key Value DENSE_RANK() OVER(ORDER BY value)
--- ----- ------------
P1 0.6 2
P1 0.6 2
P1 0.6 2
P2 0.8 1
P2 0.8 1
P3 0.6 2
P3 0.6 2
当我尝试选择前两个键“排名在1和2之间”时,我会收到3个键。这会破坏所需的分页机制
有什么想法吗
谢谢如果您想要不同的键和值,为什么不使用不同的
select distinct
t.Key,
t.Value
from
YourTable t
order by
t.value
你真的需要军衔吗
如果你这样做了,你仍然可以
select distinct
t.Key,
t.Value,
dense_rank() over () order by (t.Value, t.Key) as Rank
from
YourTable t
order by
t.value
这项工作没有明显的,以及
'当我尝试选择前两个时
我收到的密钥“排名在1和2之间”
退3把钥匙。”
这是因为您只是按值排序,所以具有相同值的所有键都被分配相同的秩。因此,您需要在ordering子句中包含键。像这样:
DENSE_RANK() OVER (ORDER BY key ASC, value DESC)
“我不知道如何生成显示在所需秩列中的值的秩。”我也不知道。你说你希望它们按值降序排列(这是第二组数据提供的)。你能举一些例子说明每个键(“P1”、“P2”…)有不同的值,以及在这些情况下你期望得到什么吗?谢谢,我通过以下方法得到了期望的结果:稠密排列()覆盖(按值排序DESC,键ASC),因此行按值排序显示。如果相等,则键决定顺序