Sql 分组依据,但不适用于数字指标-Oracle
我在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
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时,你必须考虑,并在你的要求中包括,当存在联系时应该发生什么。举个例子,如果一个类别中第三和第四高的升力相等呢?到目前为止你的尝试是什么?