SQL实战 | 自连接:查找车辆换乘信息
2025-07-25 本文已影响0人
AureSong
一 题目
找出所有从 Craiglockhart 出发,经过一次换乘可以到达 Sighthill 的公交换乘方案。
输出:第一程的车号和公司、换乘站站名、第二程的车号和公司。
二 数据表结构:
数据表 stops:
id:站点编号
name:站点名称
数据表 route:
num:公交车号
company:公交公司
pos:在线路中的顺序
stop:站点编号,对应 stops 中的 id
三 参考答案:
参考答案1:
参考答案2:
四 输出示例
五 技术说明
1. WITH ... AS ... :
定义的临时结果集,方便分步骤写复杂查询,多个结果集中间用逗号隔开
此处定义的bus1和bus2,分别得出途经Craiglockhartd、Sighthill的公交车号和公司
2. 答案1中JOIN r3、r4 ,以及答案2中JOIN tr1、tr2 :
通过连接找换乘站
3. JOIN stops transfer:
给出换乘站的名字
4. DISTINCT:
避免重复组合
5. WHERE 中的 NOT(...):
确保第一程和第二程不是同一辆车
说明:
本题参考自 SQLZoo(sqlzoo.net),内容为个人学习总结,欢迎交流分享,转载请注明来源
— END —
数据分析,一起努力。
Thryze|数据分析 × AI能力成长 × 效率工具探索