oracle 地铁时刻表问题

weixin_39480672 2018-04-15 09:59:01
求助各位,现在根据 A表 乘客进站时间ENTRY-time, 用a表示,和 B 表列车离站时间 DEPART-time ,用b表示,表B解释下,这条线最早的一辆车6:39:30从武汉站出发,6:42:20第二辆车从武汉站出发,以此类推。现在我想把 乘客进站时间a在第一辆车离站时间之前的都统计为 坐的第一辆车,进站时间a时间第一辆和第二辆之间都统计为第二辆车,最后输出一个 统计结果,一列是DEPART-time,一列是统计人数,该怎么做?谢谢大家
...全文
1158 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Z_B_Hrunqian 2018-05-30
  • 打赏
  • 举报
回复
with A as (select to_date('2018-5-30 6:00:00','yyyy-mm-dd hh24:mi:ss') entrytime from dual union all select to_date('2018-5-30 6:05:00','yyyy-mm-dd hh24:mi:ss') from dual union all select to_date('2018-5-30 6:20:00','yyyy-mm-dd hh24:mi:ss') from dual union all select to_date('2018-5-30 6:21:00','yyyy-mm-dd hh24:mi:ss') from dual union all select to_date('2018-5-30 6:25:00','yyyy-mm-dd hh24:mi:ss') from dual union all select to_date('2018-5-30 7:00:00','yyyy-mm-dd hh24:mi:ss') from dual union all select to_date('2018-5-30 7:10:00','yyyy-mm-dd hh24:mi:ss') from dual union all select to_date('2018-5-30 7:25:00','yyyy-mm-dd hh24:mi:ss') from dual union all select to_date('2018-5-30 7:45:00','yyyy-mm-dd hh24:mi:ss') from dual union all select to_date('2018-5-30 8:01:00','yyyy-mm-dd hh24:mi:ss') from dual), B as (select to_date('2018-5-30 6:20:00','yyyy-mm-dd hh24:mi:ss') depart_time from dual union all select to_date('2018-5-30 6:40:00','yyyy-mm-dd hh24:mi:ss') from dual union all select to_date('2018-5-30 7:40:00','yyyy-mm-dd hh24:mi:ss') from dual union all select to_date('2018-5-30 8:20:00','yyyy-mm-dd hh24:mi:ss') from dual) select nexttime,count(1) from A, (select lag(depart_time,1) over(order by depart_time) firsttime,depart_time nexttime from B ) where (a.entrytime between firsttime and nexttime) or (firsttime is null and entrytime<nexttime) group by nexttime order by nexttime
nayi_224 2018-05-24
  • 打赏
  • 举报
回复
select t1.depart_time, count(1) from ( select*from ( select to_number(to_char(b.depart_time, 'sssss')) end_time, to_number(to_char(nvl(lag(b.depart_time) over(order by b.depart_time), trunc(sysdate)), 'sssss')) start_time, b.depart_time from b b ) b1, (select a.entry_time, to_number(to_char(b.depart_time, 'sssss')) s_time from a) a1 where a1.s_time(+) > b1.start_time and a1.s_time(+) < b1.end_time ) t1 group by t1.depart_time ; 盲写的,不保证能执行...
nayi_224 2018-05-24
  • 打赏
  • 举报
回复
lag + between关联
桃花岛黄岛主 2018-05-18
  • 打赏
  • 举报
回复
写个函数,根据进站时间计算他是座哪趟车,然后再分组求和
weixin_39480672 2018-04-16
  • 打赏
  • 举报
回复
引用 1 楼 baidu_36457652 的回复:
可不可以 直接 a b加个以时间排序的 顺序号作为关联字段?
请教一下,那之后怎么判断呢?
weixin_39480672 2018-04-16
  • 打赏
  • 举报
回复
引用 2 楼 jdsnhan 的回复:
B表的每条记录都表示一趟车吗?
打个比方,这条线最早的一辆车10086 号车6:39:30从武汉站出发,6:42:20第二辆车10087号车从武汉站出发,6:44:50第三辆车 10088号车从武汉站出发
jdsnhan 2018-04-16
  • 打赏
  • 举报
回复
B表的每条记录都表示一趟车吗?
  • 打赏
  • 举报
回复
可不可以 直接 a b加个以时间排序的 顺序号作为关联字段?

3,493

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧