2013-02-17 119 views
0

我有一個包含開始/停止時間戳的sqlite表。我想創建一個查詢,從那裏返回總的流逝時間。在sqlite中加入select/subtraction的奇數/偶數結果?

現在我有一個SELECT(如SELECT t,type FROM event WHERE t>0 AND (name='start' or name='stop) and eventId=xxx ORDER BY t),它返回一個表,它看起來是這樣的:

+---+-----+ 
|t |type | 
+---+-----+ 
| 1|start| 
| 20|stop | 
|100|start| 
|150|stop | 
+---+-----+ 

爲了生產總時間在上面的例子會被(20-1)+(150-100) = 69

完成我有一個想法是這樣的:我可以運行兩個單獨的查詢,一個用於「開始」字段,一個用於「停止」字段,假設他們總是這樣排隊:

+---+---+ 
|(1)|(2)| 
+---+---+ 
| 1| 20| 
|100|150| 
+---+---+ 

(1) SELECT t FROM EVENT where name='start' ORDER BY t 
(2) SELECT t FROM EVENT where name='stop' ORDER BY t 

然後它會很簡單(我認爲!)來總結差異。唯一的問題是,我不知道是否可以像這樣加入兩個單獨的查詢:我熟悉將每行與每行相結合的聯接,然後刪除那些不符合某些條件的聯接。在這種情況下,標準是行索引是相同的,但這不是數據庫字段,它是兩個獨立選擇輸出中結果行的順序 - 沒有任何數據庫字段可用於確定這一點。

或者還有其他方法可以做到這一點?

回答

1

我不使用SQLite,但這可能工作。讓我知道。

SELECT SUM(CASE WHEN type = 'stop' THEN t ELSE -t END) FROM event 

此處假定類型中唯一的值是開始/停止。

+0

只有除了開始和停止的類型,但我可以很容易地用一個子查詢替代使事情成功的「事件」。謝謝! – Michael 2013-02-18 00:34:45