我有一个表a(运单号不重复,站点和时间可以重复)
运单号 站点 时间
11111 北京 2006-1-1 12:23:34
11112 上海 2006-1-1 13:25:36
11113 上海 2006-1-1 13:34:54
11114 天津 2006-1-2 13:25:23
11115 杭州 2006-1-2 13:25:56
11116 北京 2006-1-2 13:56:34
. . .
. . .
. . .我现在要一个结果集按站点分组并排序,(时间段的概念是:比如2006-1-1 13:25:36和2006-1-1 13:34:54,都算一个小时以内,我要的时间段是按小时为单位的)
站点 时间段 运单数量
北京 2006-1-1 12:00:00 1 2006-1-1 12:00:00代表12点到13点
北京 2006-1-2 13:00:00 1
上海 2006-1-1 13:00:00 2
天津 2006-1-2 13:00:00 1
杭州 2006-1-2 13:00:00 1
请教这个怎么做?
运单号 站点 时间
11111 北京 2006-1-1 12:23:34
11112 上海 2006-1-1 13:25:36
11113 上海 2006-1-1 13:34:54
11114 天津 2006-1-2 13:25:23
11115 杭州 2006-1-2 13:25:56
11116 北京 2006-1-2 13:56:34
. . .
. . .
. . .我现在要一个结果集按站点分组并排序,(时间段的概念是:比如2006-1-1 13:25:36和2006-1-1 13:34:54,都算一个小时以内,我要的时间段是按小时为单位的)
站点 时间段 运单数量
北京 2006-1-1 12:00:00 1 2006-1-1 12:00:00代表12点到13点
北京 2006-1-2 13:00:00 1
上海 2006-1-1 13:00:00 2
天津 2006-1-2 13:00:00 1
杭州 2006-1-2 13:00:00 1
请教这个怎么做?
as (select seqno, to_date(date_str || time_str, 'YYYYMMDDHH24:MI:SS') t, value v from x)
select rownum, z1.*
from
(
select to_char(min(t), 'YYYYMMDD'), to_char(min(t), 'HH24:MI:SS'), sum(v)
from
(select seqno - case when (t - lag(t) over (order by seqno)) <= 1/24/60 then 1 else 0 end as s, t, v from y) z
group by s
order by 1,2
) z1
老代码类似
a.站点,a.时间段,count(a.*) 运单数量
from
(select 运单号,站点,to_char(时间,'YYYY-MM-DD HH24')||':00:00' 时间段 from 表a) a
group by
a.站点,a.时间段