2015-06-27 196 views
1

我开发一个库存管理应用程序,投资组合登记表有4列,除日期和registry_key等,它看起来像这样:MYSQL SELECT DISTINCT用SUM

---------------------------------------- 
| stock_key | user_key | units | price | 
---------------------------------------- 
| fund_a | user_1 | 1000 | 100.35| 
| fund_c | user_2 | 4000 | 101.55| 
| fund_d | user_3 | 2000 | 105.65| 
| fund_a | user_1 | 1500 | 101.45| 
| fund_b | user_1 | 500 | 103.35| 
---------------------------------------- 

我要选择的投资组合user_1具有不同的stock_key。例如:

对于USER_1的结果应该是:

[ 
    {fund_key: "fund_a", units: sum(1000,1500), price: sum(100.35,101.45)}, 
    {fund_key: "fund_b", units: 500, price: 103.35} 
] 

希望这个问题是可以理解的。谢谢。

二期

怎么样,我需要的价格作为支付了单位数的累计总额。因此,对于USER_1的结果会是这样:

[ 
    {fund_key: "fund_a", units: sum(1000,1500), price: sum(1000*100.35,1500*101.45)/sum(1000,1500)}, 
    {fund_key: "fund_b", units: 500, price: 103.35} 
] 

,因为一旦用户带来了相同的股票较多的个股以更低/更高的价格比以前积累的股票价格被平均掉这一点很重要。

谢谢。

回答

0

所以尝试:

SELECT stock_key, SUM(units), SUM(units * price)/SUM(units) 
FROM Portfolio 
WHERE user_key = 'user_1' 
GROUP BY stock_key; 
+0

感谢的人!干杯.. –

+0

请检查编辑,我已经添加了另一层困难。谢谢。 –