来自sqlzoo的SQL问题:找到从Craiglockhart到Sighthill的两辆公交车的路线。显示公交车编号。首班车的公司,换乘的车站名称,以及公交车号码。第二班公交车有公司。
这是我找到的代码,但是它不能工作:
SELECT DISTINCT a.num, a.company,
trans1.name , c.num, c.company
FROM route a JOIN route b
ON (a.company = b.company AND a.num = b.num)
JOIN ( route c JOIN route d ON (
我有以下数据框:
Col1 Col2
1 A
1 B
1 C
2 A
2 B
2 C
3 D
3 B
3 C
3 F
4 A
4 B
4 C
我想从Col2 (特定公交路线的实际站点)中提取唯一的序列向量(公交线路站点序列),其中每个序列由R中的Col1 (各自的公交路线in )定义。相同序列的多次出现并不重要。因此,期望的输出是:
A, B, C (在Col1=1、2和4情况下)和D, B, C, F (在Col1=3情况下)
在任何数据库管理系统(最好是MySQL或PostgreSQL)中,有可能有一列总是指向特定时间发生的下一个日期吗?例如,存储时间02:00将给出下一个发生的日期时间02:00。
这在公交车时刻表场景(具有固定时刻表)中是需要的,其中需要很容易地查询下一辆公交车的时间。这可以通过像where time > NOW() order by time asc这样的工具来完成。但是,这在诸如在23:00查询午夜之后的下一辆公交车的情况下不起作用。
我想到的一个解决方案(不需要在编程语言中处理)是创建一个带有条件选择列的视图,类似于select if date(time) < now then
我在上练习self join,对于下面的问题(Q10),有一件事我不明白:
问题是:找出从Craiglockhart到Sighthill的两辆公交车的路线。显示公交车编号。首班车的公司,换乘的车站名称,以及公交车号码。对于第二辆公交车,答案是:
SELECT DISTINCT a.num, a.company, stopb.name , c.num, c.company
FROM route as a JOIN route as b
ON (a.company = b.company AND a.num = b.num)
JOIN ( route c JOIN route d O