我正在开发一个Stocks管理应用程序,Portfolio寄存器表有4列,而不是date和registry_key,它看起来像这样:
----------------------------------------
| 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|
----------------------------------------
我希望选择具有不同stock_key的user_1的投资组合。例如:
对于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 :(得分:0)
所以试试:
SELECT stock_key, SUM(units), SUM(units * price) / SUM(units)
FROM Portfolio
WHERE user_key = 'user_1'
GROUP BY stock_key;