爬了12306,用大数据决定十一去哪儿玩

不知不觉还有两个月又要十一小长假了,对于我和闺蜜们,这是十分难得可以一起出游的机会。每年为了这个短途的国内游,我们都要头疼上一阵子,最主要的原因是我们在不同的城市工作,需要找一个大家都能到,也比较方便,又都没去过的地方。
正好最近在学sql,于是我自告奋勇,想先从12306下手,看看能不能帮我做做筛选。说干就干,我找到了一个开源的爬虫,可以拿到12306的车次信息。所以第一件事,我爬了所有从青岛、北京、上海三个地方出发的车次信息,一共16493条。


车次信息表.png

总数.png

下一步需要筛选出来,三个地方都能够到达的地方,发现我们这三个城市都能坐火车到达的有64个车站。

select distinct c.to_station
from
(
select a.from_station,a.arrive_time,b.from_station as from_station2,b.arrive_time as arrive_time2,a.to_station
from tb_train_5 a
join tb_train_5 b on a.to_station = b.to_station
and a.from_station like '%上海%'
and b.from_station like  '%青岛%') c
join tb_train_5 on tb_train_5.to_station = c.to_station
and tb_train_5.from_station like '%北京%'
共同到达站.png

64个车站还是无从下手,于是我又把我们三个城市分别的到达时间列出来,发现,虽然这些车站我们都能到达,但是有一些车站三个人的到达时间差太大甚至到了一整个白天,本来时间就很紧张经不起这么大段的浪费。

select distinct c.from_station,c.arrive_time,c.from_station2,c.arrive_time2,tb_train_5.from_station as from_station3,tb_train_5.arrive_time,c.to_station
from
(
select a.from_station,a.arrive_time,b.from_station as from_station2,b.arrive_time as arrive_time2,a.to_station
from tb_train_5 a
join tb_train_5 b on a.to_station = b.to_station
and a.from_station like '%上海%'
and b.from_station like  '%青岛%') c
join tb_train_5 on tb_train_5.to_station = c.to_station
and tb_train_5.from_station like '%北京%'
出发站和到达时间.png

跟闺蜜商量了一下,一致决定,我们希望能够在2个小时只能都到齐,然后一起打车出发去宾馆。于是我又对到达时间做了限制,得到了39个车站。

select distinct c.to_station
from
(
select a.from_station,a.arrive_time,b.from_station as from_station2,b.arrive_time as arrive_time2,a.to_station
from tb_train_5 a
join tb_train_5 b on a.to_station = b.to_station
and a.from_station like '%上海%'
and b.from_station like  '%青岛%'
and timestampdiff(minute,a.arrive_time,b.arrive_time)<=120
and timestampdiff(minute,b.arrive_time,a.arrive_time)<=120) c
join tb_train_5 on tb_train_5.to_station = c.to_station
and tb_train_5.from_station like '%北京%'
and timestampdiff(minute,tb_train_5.arrive_time,c.arrive_time)<=120
and timestampdiff(minute,c.arrive_time,tb_train_5.arrive_time)<=120
and timestampdiff(minute,c.arrive_time2,tb_train_5.arrive_time)<=120
and timestampdiff(minute,tb_train_5.arrive_time,c.arrive_time2)<=120
站点.png

好啦,我要拿着这39个车站去找闺蜜啦。也只是最近在学sql就想着用一个真实案例来模拟一下,这个过程应该有很多种sql的写法,如果小伙伴们有更好的方法欢迎与我交流啦。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 北京-喜<-> 15:59:20虽然难用,但12306面临的业务场景复杂度可能是世界之最. 先背书:文章里是内容我...
    六月星空2011阅读 4,268评论 0 0
  • 一、产品概述 1.体验环境 体验机型:华为荣耀6 plus 安卓版本:4.4.2 体验版本:2.92 体验时间:2...
    Juanial阅读 14,080评论 0 14
  • “龟子,你为什么喜欢我?” 问我这话的是我的女朋友,胖子。此刻,她正一边啃着辣条,一边躺在我的腿上看我以前的日记。...
    苏溪羽阅读 6,316评论 25 68
  • 【清芳妖境】70 20180306 一天见到四个朋友,仿佛经历人生的几个季节。 春天般的真真。暑期课程学习结束没有...
    清芳福田阅读 3,043评论 5 3
  • 文/一刀斋 像赴约一般,提前从图书馆离开。空无一人的长廊里只有鞋跟敲击地面的清脆声音,不好意思地踮着脚走了出去。身...
    一刀斋阅读 2,256评论 0 1

友情链接更多精彩内容