添加ID来重复两列

问题描述 投票:1回答:1

我有一个代表城市之间贸易交流的表,我想补充一个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

我可以有相同的起点/终点,但我也可以有起点/终点=目标/起源,我想所有确定这些群体的。

sql postgresql duplicates grouping
1个回答
2
投票

方式一:用窗函数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开始喜欢你的榜样。

© www.soinside.com 2019 - 2024. All rights reserved.