2010-10-29 31 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

相关问题