2010-10-29 66 views
0

我想總結兩列的乘積,但我想在小部分中進行。也就是說,對於每個datesymbol我想總結oi和'contract_settle`的乘積。這裏是我的SQLite數據庫的一個片段:SQLite - 根據其他列中的索引對列的小部分進行求和

date symbol cont oi contract_settle 
20030103 NVLS1C  100 NA 
20030103 NVLS1C 03F 19 3125 
20030103 NVLS1C 03G 8 3128 
20030103 NVLS1C 03H 14 3130 
20030103 NVLS1C 03M 59 3140 
20030103 BGEN1C  90 NA 
20030103 BGEN1C 03F 20 4149 
20030103 BGEN1C 03G 30 4154 
20030103 BGEN1C 03H 20 4158 
20030103 BGEN1C 03M 20 4174 

所以,我想這樣的結果:

date symbol cont oi contract_settle oi_dollar 
20030103 NVLS1C  100 NA   313479 
20030103 NVLS1C 03F 19 3125  
20030103 NVLS1C 03G 8 3128  
20030103 NVLS1C 03H 14 3130  
20030103 NVLS1C 03M 59 3140  
20030103 BGEN1C  90 NA   374240 
20030103 BGEN1C 03F 20 4149  
20030103 BGEN1C 03G 30 4154  
20030103 BGEN1C 03H 20 4158  
20030103 BGEN1C 03M 20 4174  

我想這會工作:

SELECT *, 
(SELECT sum(oi * contract_settle) WHERE symbol=symbol) as oi_dollar 
FROM ann 

但它給出了這樣的:

date symbol cont oi contract_settle oi_dollar 
20030103 NVLS1C  100 NA   NA 
20030103 NVLS1C 03F 19 3125   59375 
20030103 NVLS1C 03G 8 3128   25024 
20030103 NVLS1C 03H 14 3130   43820 
20030103 NVLS1C 03M 59 3140   185260 
20030103 BGEN1C  90 NA   NA 
20030103 BGEN1C 03F 20 4149   82980 
20030103 BGEN1C 03G 30 4154   124620 
20030103 BGEN1C 03H 20 4158   83160 
20030103 BGEN1C 03M 20 4174   83480 

謝謝!

回答

1

我不知道SQLite,但我認爲它支持group by子句,例如,

SELECT date, symbol, SUM(oi * contract_settle) AS oi_dollar 
    FROM add 
GROUP BY date, symbol; 
+0

哇!它確實!而且速度很快!謝謝! – 2010-10-29 20:34:28

+0

沒問題,盡情享受吧! – vickirk 2010-10-29 20:38:11

相關問題