2014-10-01 70 views
1

我有一組數據集及其頻率,例如,在sqlite中計算特徵的出現

w1 w2 w3 freq 
a a a 4 
a a and 3 
a a band 1 
a a well 1 
a and a 2 

我想根據下表來獲取觀測計數:

  (w3) not(w3) 
(w1,w2)  n1  n2 
not(w1,w2) n3  n4 

其中N1,...,N4是滿足條件的觀測頻率的總和。例如,在第一個觀察中,w1 = a,w2 = a,w3 = a。我們現在將檢查w1 = a,w2 = a,w3 = a的所有觀察值。我們發現只有一個觀測符合這個標準,其頻率是4.接下來我們做w1 = a,w2 = a,w3!= a並且給出我們觀測的頻率是3,1,1,總和是5。現在我們將做w1!= a,w2!= a,w3 = a,它是0,並且w1!= a,w2!= a,w3!= a是0.

我想要一個表格,作爲:

w1 w2 w3 freq n1 n2 n3 n4 
a a a 4  4 5 0 0 
a a and 3  3 6 0 0 
a a band 1 
a a well 1 
a and a 2 
etc. 

我怎樣才能實現這一點使用sqlite3?

回答

1

這可以用相關的,標量子查詢來完成:

SELECT w1, 
     w2, 
     w3, 
     freq, 
     (SELECT SUM(freq) 
     FROM MyLittleTable AS T2 
     WHERE T2.w1 = T1.w1 
      AND T2.w2 = T1.w2 
      AND T2.w3 = T1.w3 
     ) AS n1, 
     (SELECT SUM(freq) 
     FROM MyLittleTable AS T2 
     WHERE T2.w1 = T1.w1 
      AND T2.w2 = T1.w2 
      AND T2.w3 != T1.w3 
     ) AS n2, 
     ... 
FROM MyLittleTable AS T1