我怎样才能在 postgres 中每 10 行使用 orderby

How can i use orderby only for every 10 rows in postgres

我需要对单列的每 10 行排序 table 并获取 n 间隔的行。我正在使用 where mod(rownum,10) 来完成第二部分。但是我找不到一种方法在获取 n rows.Please 的第一行和最后一行之前每第 n 行进行排序帮助 table 就像 =>

Column
15
18
13
14
11
16
17
12
19
20
9
2
3
5
4
6
7
8
1
10

这是我当前使用的查询==>

Select column
from (select column,row_number() over (order by column) as rn
      from table
     ) t
where mod(rn,10)=0 or mod(rn,10)=1;

这将获取

Column
1
10
11
20

但我想要的是

Column
11
20
1
10

Ps:我不能按整列排序,然后每第 1 行和第 10 行获取,我想按前 10 列排序,获取第 1 行和第 10 行,然后按下 10 列排序,获取第 11 到第 20 等..

而且我只能触发一次查询

像这样:

SELECT col, rn, (rn - 1) / 10 AS trunc
  FROM (SELECT col, row_number() over (order by col) as rn
          FROM data
     ) t
 WHERE mod(rn,10)=0 or mod(rn,10)=1
 ORDER BY (rn - 1) / 10 DESC
;

结果:

+------+----+-------+
| col  | rn | trunc |
+------+----+-------+
|   11 | 11 |     1 |
|   20 | 20 |     1 |
|    1 |  1 |     0 |
|   10 | 10 |     0 |
+------+----+-------+

Working Example