2014-07-16 73 views
0

我有每5分鐘運行一次node.js腳本並將數據插入到下表中。我在IBM Db2數據庫中使用時間戳數據類型來標識每一行。編寫麻煩使用nodejs選擇查詢

我想在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'); 
     }); 
     }); 
    }); 

回答

0

這裏有一個possability:

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 

的想法是,我們每個日期和時刻以根據自己的時間排內,我們就可以選擇每個這樣的分區內的第一個。