基于不同有序列的 Oracle Rank 列

问题描述 投票:0回答:1

我的表中的数据如下:

命名varchar2(10), 金额数量(2)

名称 金额
B 2
B 2
A 1
A 1
C 3
C 3
C 4
C 5
C 5
C 5

我怎样才能实现以下两种可能的结果:

  1. 第一个预期结果:获取每个ename的最小数量
名称 金额
A 1
B 2
C 3
  1. 第二个预期结果:新的排名列按金额排序,每个名称的排名相同
名称 金额 排名
A 1 1
A 1 1
B 2 2
B 2 2
C 3 3
C 3 3
C 4 3
C 5 3
C 5 3
C 5 3

我试过了:

选择名称 ,数量 ,dense_RANK() OVER(按名称分区 ORDER BY 金额)AS NEW_ID 从 (
选择不同的名称 ,数量 来自测试表
);

但只能得到:

名称 金额
A 1
B 2
C 3
C 3
C 3

对于我尝试过的第二个问题

选择名称 ,数量 ,dense_RANK() OVER(按金额排序)AS NEW_ID 来自测试表
;

但只能得到:

名称 金额 排名
A 1 1
A 1 1
B 2 2
B 2 2
C 3 3
C 3 3
C 4 4
C 5 5
C 5 5
C 5 5

请帮助我获得想要的结果集。

oracle oracle-sqldeveloper
1个回答
0
投票

第一个很简单

Select ename, min(amount) as amount
From table
Group by ename

第二个我稍后会在电脑前查看

© www.soinside.com 2019 - 2024. All rights reserved.