5 분마다 실행되는 node.js 스크립트가 있고 아래 테이블에 데이터가 삽입됩니다. IBM Db2 데이터베이스에서 timestamp 데이터 유형을 사용하여 각 행을 식별합니다.문제 쓰기 nodejs를 사용하여 쿼리 선택
node.js에이 테이블에 연결하고 데이터를 시간별로 표시하는 쿼리를 작성하려고합니다. 나는 5 분마다 실행되기 때문에 하루에 여러 시간에 여러 행이 생기기 때문에 행을 선택하는 방법을 이해하는 데 어려움을 겪고 있습니다. 나는 테이블에서 매 시간의 첫 번째 행을 선택하고 표시하는 논리를 작성하려고합니다. 따라서 어느 날 24 개의 행이 반환됩니다.
나는 각 시간의 첫 번째 행을 선택하거나 각 시간의 평균 계산을 할 수 있습니다. 그러나, 나는 그것에 대한 쿼리를 작성하는 방법을 혼란스러워합니다. 누군가 내가 내가 사용해야하는 것을 이해하도록 도와 줄 수 있습니까?
select SQLDB_MAX,SQLDB_ASSIGNED, (SQLDB_ASSIGNED + SQLDB_POOLED) As SUMOFAP
from (
select SQLDB_MAX, SQLDB_ASSIGNED, SQLDB_POOLED
, row_number() over (partition by date(SQLDB_TIMESTAMP)
, hour(SQLDB_TIMESTAMP)
order by SQLDB_TIMESTAMP) as rn
from TOTALS
) where rn = 1
생각은 행들이 시간에 따라 각각의 날짜와 시간 순서 내에서 우리는, 우리가 다음 선택할 수 있다는 것입니다 :
CREATE TABLE TOTALS(
SQLDB_POOLED INT,
SQLDB_MAX INT,
SQLDB_ASSIGNED INT,
SQLDB_TIMESTAMP TIMESTAMP NOT NULL DEFAULT CURRENT TIMESTAMP
) ;
는
ibmdb.open(dsnString, function (err,conn) {
if (err) return console.log(err);
conn.query('select SQLDB_MAX,SQLDB_ASSIGNED,(SQLDB_ASSIGNED + SQLDB_POOLED) As SUMOFAP from TOTALS, function (err, data) {
if (err) console.log(err);
console.log(data);
res.send(JSON.stringify(data));
conn.close(function() {
console.log('done');
});
});
});