Sql 分组依据,但不适用于数字指标-Oracle

Sql 分组依据,但不适用于数字指标-Oracle,sql,oracle,Sql,Oracle,我在Oracle中有下表: category group lift Apples Lemons 8 Apples Oranges 7 Apples Bananas 9 Apples Watermelon 7.5 Oranges Pineapple 6 Oranges Apples 2.5 Oranges Lemon

我在Oracle中有下表:

category      group         lift
Apples        Lemons        8
Apples        Oranges       7
Apples        Bananas       9
Apples        Watermelon    7.5
Oranges       Pineapple     6
Oranges       Apples        2.5
Oranges       Lemons        4
Oranges       Strawberries  5.5  
在现实生活中,category字段包含的苹果和橙子行太多。我想做的是选择不同的类别和前3组字段,它们对应于每个类别的最大电梯。像这样:

category      group         lift

Apples        Bananas       9
Apples        Lemons        8
Apples        Watermelon    7.5
Oranges       Pineapple     6
Oranges       Strawberries  5.5
Oranges       Lemons        4
如你所见,我想做一种分组方式,但不使用任何数字度量。我只想根据电梯订购情况,选择每个类别前3组

有没有关于如何在Oracle中实现这一点的想法


提前谢谢

你必须了解密集等级是如何运作的。如果顶部范围中的值相等,例如:9、8、7、7、6:则选择返回4个顶部行9、8、7、7

select FCATEGORY, FGROUP, FLIFT from (
    select f.*, dense_rank() over ( partition by f.FCATEGORY order by f.FLIFT desc ) rnk
    from fruits f )
where rnk <= 3

尝试按类别顺序按提升选择分区上的行数,看看是否可以在having子句或cte中使用该行数。领带可能会有问题。你想要类似的东西吗?在所有情况下,当你想通过某种方式提升顶部n或底部n时,你必须考虑,并在你的要求中包括,当存在联系时应该发生什么。举个例子,如果一个类别中第三和第四高的升力相等呢?到目前为止你的尝试是什么?