sql - 奇怪的 ORDER BY 要求

标签 sql oracle

我有一个包含多个列的数据集...
一列是具有重复值的主石斑鱼列,另一列是具有 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/

相关文章:

mysql - 检查单个列的多个值mysql

PHP 和 MySQL : Store and print hex char

java - 从java到plsql varchar2(1)的单字符串导致 'character string buffer too small'

sql - 如何在单个语句中替换/删除字符串中的多个单词

sql - Oracle SQL : Retrieving the value of adjacents fields if value is empty

mysql - 按 2 个月的时间段对出生日期进行分组

c# - 从 sql 获取值并将它们放在复选框上

oracle - "table definition changed"尽管在表创建/更改后创建了还原点

SQL 对两个表中的值求和和分组

oracle - 假脱机命令 : Do not output SQL statement to file