簡體   English   中英

使用nodejs編寫選擇查詢時遇到麻煩

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM