【发布时间】:2021-02-01 23:13:33
【问题描述】:
我正在使用的表格如下所示
| id_psg | town_from | town_to |
|---|---|---|
| 1 | Rostov | Moscow |
| 1 | Rostov | Paris |
| 2 | Rostov | Moscow |
| 2 | Singapore | London |
| 2 | Singapore | London |
| 3 | London | Singapore |
| 3 | London | Singapore |
| 4 | Singapore | London |
| 4 | London | Singapore |
| 4 | Singapore | London |
| 5 | London | Singapore |
| 5 | London | Singapore |
| 5 | Paris | London |
我们拥有按乘客 ID 区分的人的数据,以及他们从哪个城镇旅行。
起初,我希望找到仅从 1 个地点旅行到仅 1 个目的地的乘客 ID(无论他们这样做了多少次)。所以我按 id_psg 对表进行分组并查找重复项。这段代码实现了这个目标。
SELECT id_psg
FROM passengers
GROUP BY id_psg
HAVING COUNT(DISTINCT town_from) = 1 AND COUNT(DISTINCT town_to) = 1
我得到的结果是
|id_psg|
|------|
|3 |
现在我正在尝试获取仅在 2 个城镇之间旅行的乘客的乘客 ID 的结果,不一定是单程,也可能是往返。结果应该是这样的。
|id_psg|
|------|
|3 |
|4 |
因为 ID 为 4 的乘客仅从新加坡到伦敦或从伦敦到新加坡。
这项任务需要我在 2 列而不是 1 列之间搜索重复项,这是我无法解决的问题。
【问题讨论】:
-
合并相同的数据集与交换的
to和from并计算to和from的不同contatenations。它应该等于 2。 -
您使用的是什么 DBMS? Edit问题并添加标签。
标签: sql sql-server