我有一个代表城市之间贸易交流的表,我想补充一个id将表明相同的起点/终点和目标/起源一样的群体。
例如:
| origin | destination
|--------|------------
| 8 | 2
| 2 | 8
| 8 | 2
| 8 | 5
| 8 | 5
| 9 | 1
| 1 | 9
会成为:
| id | origin | destination
|----|--------|------------
| 0 | 8 | 2
| 0 | 2 | 8
| 0 | 8 | 2
| 1 | 8 | 5
| 1 | 8 | 5
| 2 | 9 | 1
| 2 | 1 | 9
我可以有相同的起点/终点,但我也可以有起点/终点=目标/起源,我想所有确定这些群体的。
方式一:用窗函数dense_rank()
和GREATEST
/ LEAST
:
SELECT dense_rank() OVER (ORDER BY GREATEST(origin, destination)
, LEAST (origin, destination)) - 1 AS id
, origin, destination
FROM trade;
分贝<>小提琴here
- 1
由0开始喜欢你的榜样。