[英]trouble writing Select query using nodejs
我有每5分鍾運行一次的node.js腳本,並將其數據插入下表。 我在IBM Db2數據庫中使用timestamp數據類型來標識每一行。
我正在嘗試在node.js中編寫一個查詢,該查詢將連接到該表並每小時顯示一次數據。 我在理解如何選擇行時遇到了麻煩,因為一天中不同的時間每隔5分鍾運行一次,因此會有多行。 我正在嘗試編寫一種邏輯,該邏輯將選擇表中每小時的第一行並顯示它。 因此,一天將有24行返回。
我可以選擇每小時的第一行或進行每小時的均值計算。但是,我很困惑如何為此編寫查詢。 有人可以幫助我了解我應該使用什么嗎?
CREATE TABLE TOTALS(
SQLDB_POOLED INT,
SQLDB_MAX INT,
SQLDB_ASSIGNED INT,
SQLDB_TIMESTAMP TIMESTAMP NOT NULL DEFAULT CURRENT TIMESTAMP
) ;
node.js
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');
});
});
});
這是一種可能性:
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
想法是,我們在每個日期和小時內根據行的時間對行進行排序,然后可以在每個此類分區中選擇第一個行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.