我有一个包含多个列的数据集...
一列是具有重复值的主石斑鱼列,另一列是具有 bool 值 (1,0) 的 NUMBER,如下所示:
grp bool
--- ----
A 1
A 1
A 0
A 0
B 1
B 1
B 1
B 0
C 0
等当然,我可以通过 grp、bool 来订购,以获得如上所示的列表。我想要的是让这个列表首先由 grp 排序,然后尽可能有 bool 备用值......类似于以下内容:
grp bool
--- ----
A 1
A 0
A 1
A 0
B 1
B 0
B 1
B 1
C 0
最佳答案
您可以使用 row_number()
为每个 grp 中的每个 bool 值分配顺序值来执行此操作。然后使用此顺序值进行排序:
select grp, bool
from (select d.*, row_number() over (partition by grp, bool order by grp) as seqnum
from dataset d
) d
order by grp, seqnum, bool desc;
关于sql - 奇怪的 ORDER BY 要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27549040/