DB2循环查询是我们经常遇到的问题,如果碰到的是大表问题,如何让大表实现循环查询呢?下文就为您介绍大表情况下DB2循环查询的实现方法,供您参考。

需求说明:

有一张表,三个字段,分别是 飞信号 登录时间 下线时间

现在想依天求得在同时线用户数。

我们的方法是将时间分成每5分钟一个的时间点,求该点时间之前上线的,该点时间之后下线的的用户数

然后以一天中在线用户最多的时间点。做为当天的同时在线用户数。

DB2循环查询实现方法如下:

    --原始数据表 createtablezhangmo_online(sidinteger,logintimetimestamp,logouttimetimestamp); --测试数据 insertintozhangmo_online select51982112,currenttimestamp,currenttimestamp+20MINUTESfrom(values(1))a; --建立5分钟时段抽样表 createtablezhangmo_onlinenum(onlinetimevarchar(20),onlinenuminteger); --建立柚样过程 createprocedurezhangmo_onlinenum() languagesql begin declareitimestamp; seti=TIMESTAMP('2008-02-0100:00:00'); whilei<TIMESTAMP('2008-03-0100:00:00')do insertintozhangmo_onlinenum(onlinetime,onlinenum) selecttrim(char(year(i)))|| right('00'||trim(char(month(i))),2)|| right('00'||trim(char(day(i))),2)|| right('00'||trim(char(hour(i))),2)|| right('00'||trim(char(minute(i))),2),count(distinctsid) fromzhangmo_online wherelogintime<iandlogouttime>i; setii=i+5MINUTES; endwhile; commit; end; --执行过程 callzhangmo_onlinenum(); --得到最后的数据 selectleft(onlinetime,10),max(onlinenum)fromzhangmo_onlinenum groupbyleft(onlinetime,10);

【编辑推荐】

DB2查询管理实用程序

DB2数据仓库产品简介

DB2分页的实现

DB2游标及其使用

DB2表空间的管理方式