Oracle 取过去一个小时每分钟的数据应该如何写sql?
我现在有一张表A,里面有一个字段是time字段,插入一条数据的时候都会带有time字段,time字段的格式为2015/11/255:29:58,现在需要统计每分钟有多少条...
我现在有一张表A,里面有一个字段是time字段,插入一条数据的时候都会带有time字段,time字段的格式为2015/11/25 5:29:58,现在需要统计每分钟有多少条数据插入,应该如何去写?需要统计过去一个小时每分钟,如果没有插入数据则为0,谢谢。
展开
4个回答
展开全部
写个例子吧
创建表、插入数据:
create table a
(time date);
insert into a values (to_date(20151208150101,'yyyymmddhh24miss'));
执行:
with t as
(select rownum rn from dual connect by rownum<=60)
select t.rn-1 rn,sum(case when t.rn-1=to_char(a.time,'mi') then 1 else 0 end) from t left join a on t.rn=to_char(a.time,'mi') and to_char(a.time,'yyyy-mm-dd hh24:mi:ss') between
'2015-12-08 15:00:00' and '2015-12-08 15:59:59'
group by t.rn
order by t.rn
结果:
其中rn代表分钟数
展开全部
思路: 按照分钟进行分组统计,如果需要统计之前1个小时,再加入where条件即可。
下面是按照分钟分组的sql:
SELECT
count(*)
FROM A
WHERE time>= sysdate - 1/24
GROUP BY to_char(time ,'yyyymmdd hh24:mi');
当然这个也可以变异为按每小时,每天,每月统计插入多少条数据,只需要修改日期格式即可。
实测是可行的,请楼主结贴给分。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select mi_time,count(*)
from
(
select col1,col2,col3,col4.., to_char(time,'mi') mi_time)
from t
where time>sysdate -1/24
)
group by mi_time
from
(
select col1,col2,col3,col4.., to_char(time,'mi') mi_time)
from t
where time>sysdate -1/24
)
group by mi_time
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select count(*) from A where time>= sysdate-1/24
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询