Javascript 使用nodejs编写Select查询时遇到问题
我有node.js脚本,每5分钟运行一次,并将的数据插入下表。我在IBMDB2数据库中使用时间戳数据类型来标识每一行 我试图在node.js中编写一个查询,该查询将连接到此表并按小时显示数据。我很难理解如何选择行,因为一天中不同的时间会有多行,因为它每5分钟运行一次。我试图编写一个逻辑,它将选择表中每小时的第一行并显示它。因此,一天将返回24行 我可以选择每小时的第一行,也可以对每小时进行平均计算。但是,我不知道如何为此编写查询。有人能帮我理解我应该用什么吗Javascript 使用nodejs编写Select查询时遇到问题,javascript,sql,node.js,db2,db2-luw,Javascript,Sql,Node.js,Db2,Db2 Luw,我有node.js脚本,每5分钟运行一次,并将的数据插入下表。我在IBMDB2数据库中使用时间戳数据类型来标识每一行 我试图在node.js中编写一个查询,该查询将连接到此表并按小时显示数据。我很难理解如何选择行,因为一天中不同的时间会有多行,因为它每5分钟运行一次。我试图编写一个逻辑,它将选择表中每小时的第一行并显示它。因此,一天将返回24行 我可以选择每小时的第一行,也可以对每小时进行平均计算。但是,我不知道如何为此编写查询。有人能帮我理解我应该用什么吗 CREATE TABLE TOTAL
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
其思想是,我们在每个日期和小时内根据时间对行进行排序,然后我们可以在每个这样的分区中选择第一个