我怎样才能在 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 |
+------+----+-------+
我需要对单列的每 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 |
+------+----+-------+