每艘船都停靠在一个港口。如果太多船只到达一个港口,船员就会不知所措。
如何返回结果集以使端口不会过载?一种可能的解决方案和基于集合的结果是:
SELECT shipnr, portnr FROM (
SELECT shipnr, portnr, DENSE_RANK() OVER(PARTITION BY portnr ORDER BY shipnr) AS N FROM ships
) AS a
ORDER BY N, portnr
然而,这不是我要找的,因为最后我们有三艘船到达 F。下面是我手工完成的一个示例,我正在寻找我正在寻找的结果集:
1 A
6 B
10 C
11 D
13 E
16 F
20 F
2 A
7 B
12 D
14 E
17 F
21 F
3 A
8 B
15 E
18 F
22 F
4 A
9 B
19 F
5 A
由于有许多端口 F,它应该以 2 个一组的形式返回,这样特定端口就不会被淹没。
好的,这是我修改后的方法,使用 NTILE。它实际上与您建议的输出大致相同。