我們有連接到一個子系統的進程,我們通過這個時間戳跟蹤 。我想知道的是在N分鐘的時間間隔內最多連接的進程數量爲 。獲取在一個時間間隔內連接的最大進程數
此時間間隔是進程的TIMEOUT時間間隔,因此經過時間的倒計時開始於連接時間。所以間隔 是一個「浮動」間隔。
爲簡單起見,此間隔的長度爲5分鐘,連接時間以分鐘爲單位,而不是以毫秒爲單位。
我們已經有一個PL/SQL函數來計算這個數字,但是我想知道是否有可能只用一個SQL來完成它。
例子:
09:10 09:15 09:20 09:25 09:30
| | | | |
----|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|---
| | | | |
| | | | | | | | | | |
a b c a c a b c d a f <-- PROCESSES
f b <-- PROCESSES
下面是PROCESSES表的SQL:
create table PRCS
(
prc_id NUMBER(12) not null,
prc_name VARCHAR2(25) not null
);
alter table PRCS add constraint PRCS_PK primary key (PRC_ID);
alter table PRCS add constraint PRCS_UK unique (PRC_NAME);
insert into PRCS values('1', 'a');
insert into PRCS values('2', 'b');
insert into PRCS values('3', 'c');
insert into PRCS values('4', 'd');
insert into PRCS values('5', 'e');
insert into PRCS values('6', 'f');
下面是連接表的SQL:
create table CON_JOURNAL
(
con_id NUMBER(12) not null,
con_date TIMESTAMP(6) not null,
con_prc NUMBER(12) not null
)
;
alter table CON_JOURNAL add constraint CON_PK primary key (CON_ID);
alter table CON_JOURNAL add constraint CON_UK unique (CON_DATE, CON_PRC);
alter table CON_JOURNAL add constraint CON_PRC_FK foreign key (CON_PRC)
references PRCS (PRC_ID);
insert into CON_JOURNAL values('1', to_date('2013.01.09 09:12', 'yyyy.mm.dd hh24:mi'), '1');
insert into CON_JOURNAL values('2', to_date('2013.01.09 09:13', 'yyyy.mm.dd hh24:mi'), '2');
insert into CON_JOURNAL values('3', to_date('2013.01.09 09:14', 'yyyy.mm.dd hh24:mi'), '3');
insert into CON_JOURNAL values('4', to_date('2013.01.09 09:18', 'yyyy.mm.dd hh24:mi'), '1');
insert into CON_JOURNAL values('5', to_date('2013.01.09 09:19', 'yyyy.mm.dd hh24:mi'), '3');
insert into CON_JOURNAL values('6', to_date('2013.01.09 09:21', 'yyyy.mm.dd hh24:mi'), '1');
insert into CON_JOURNAL values('7', to_date('2013.01.09 09:22', 'yyyy.mm.dd hh24:mi'), '2');
insert into CON_JOURNAL values('8', to_date('2013.01.09 09:23', 'yyyy.mm.dd hh24:mi'), '3');
insert into CON_JOURNAL values('9', to_date('2013.01.09 09:24', 'yyyy.mm.dd hh24:mi'), '4');
insert into CON_JOURNAL values('10', to_date('2013.01.09 09:24', 'yyyy.mm.dd hh24:mi'), '6');
insert into CON_JOURNAL values('11', to_date('2013.01.09 09:26', 'yyyy.mm.dd hh24:mi'), '1');
insert into CON_JOURNAL values('12', to_date('2013.01.09 09:26', 'yyyy.mm.dd hh24:mi'), '2');
insert into CON_JOURNAL values('13', to_date('2013.01.09 09:29', 'yyyy.mm.dd hh24:mi'), '6');
感謝你的幫助,
SK
小提琴[這裏](http://sqlfiddle.com/#!4/fb9fa/0)測試 –