SQL按重复序列排序

SQL按重复序列排序,sql,Sql,我在Oracle 11g中运行了一个查询: SELECT id, sequence FROM objects WHERE parent=56; Id. Sequence A 1 B 1 C 1 D 2 E 2 F 3 我希望对输出进行分组,如果序列Id已经存在,则在末尾将新结果移动到新分组 Id. Sequence A 1 D

我在Oracle 11g中运行了一个查询:

SELECT id, sequence FROM objects WHERE parent=56;

Id.     Sequence
A           1
B           1
C           1
D           2
E           2
F           3
我希望对输出进行分组,如果序列Id已经存在,则在末尾将新结果移动到新分组

Id.        Sequence
A           1
D           2
F           3
B           1
E           2
C           1

如果dbms支持窗口函数,请计算行数并将其用于排序

SELECT id,Sequence
FROM (
SELECT id, Sequence, ROW_NUMBER() OVER(PARTITION BY Sequence ORDER BY Id) as RN
FROM objects 
WHERE parent=56
) T
ORDER BY RN,Id

如果dbms支持窗口函数,请计算行数并将其用于排序

SELECT id,Sequence
FROM (
SELECT id, Sequence, ROW_NUMBER() OVER(PARTITION BY Sequence ORDER BY Id) as RN
FROM objects 
WHERE parent=56
) T
ORDER BY RN,Id

我想指出的是,您可以按的顺序将
行编号()

select id, sequence
from objects
where parent = 56
order by row_number() over (partition by sequence order by id),
         sequence;

我想指出的是,您可以按
的顺序将
行编号()

select id, sequence
from objects
where parent = 56
order by row_number() over (partition by sequence order by id),
         sequence;

请标记您正在使用的dbms。这背后的逻辑是什么?对不起,第一次通过手机发布!我只是通过给我的视图来处理数据库。对象下有多组子对象。我会把它们当作一个整体,通过一组序列进行管理,但它们不是这样的,更糟糕的是,在不同的序列“组”下可以找到相同的子(类型)。我正在尝试通过重复序列将它们分组排序。您可能需要添加更多示例请标记您正在使用的dbms。这背后的逻辑是什么?抱歉,第一次通过移动发布!我只是通过给我的视图来处理数据库。对象下有多组子对象。我会把它们当作一个整体,通过一组序列进行管理,但它们不是这样的,更糟糕的是,在不同的序列“组”下可以找到相同的子(类型)。我正试图通过重复序列将它们分组排序。您可能需要添加更多示例谢谢。我学到了一些新东西!我以前没用过分区,谢谢。我学到了一些新东西!我以前从未使用过分区。