如何在oracle中对另一个分组后的行进行分组?

时间:2016-08-08 20:36:36

标签: sql oracle oracle11g

我有一个名为correctObjects的表。在这款平板电脑中,这里有许多不同数量记录的grup。下面给出一个例子,因为grup 544在表中有5行。首先,我应该按GRUP COLUMN对所有记录进行分组,然后我必须通过CAP COLUMN进行内部匹配。因此在grup#544中有三种不同的CAP值,那么我必须给这些记录赋予内组号。我该怎么做这两个级别的分组过程。 GRUP列已经完成。每个记录中的内部Grup列为空。 enter image description here

内部组处理后,它必须如下所示: enter image description here

我正在使用Oracle 11g R2和PL / SQL Developer

1 个答案:

答案 0 :(得分:2)

你的问题缺乏某些细节,所以我只是给你一个起点,你可以调整它以满足你的需要。

目前还不完全清楚,但按照我理解的方式,您希望按cap 排名不同的行。我认为排名对于每个不同的grup值都是独立的。

我不清楚为什么125 mm排名162 mm排名2。它是基于价值吗?它是基于哪一行是第一行,如果是,行如何排序?或者你可能并不关心哪一个是第一个或第二个,只要它们被正确分组。我将不得不假设后者。

无论如何,听起来你想以某种形式使用dense_rank()分析函数:

select mip, startmi, cap, grup,
       dense_rank() over (partition by grup order by cap) as inner_grup
  from tbl