SQL:获取每个基金中股票的平均价值

时间:2013-12-11 16:40:04

标签: sql postgresql

我有一张包含以下信息的表格:

_______________________________________________________
|   fundName   |   stockName   |  numShares  |  price  |
_______________________________________________________
|   Sunshine   |     Enron     |     10      |   $5    |
|   Sunshine   |     Lehman    |     40      |   $10   |
|   Brightsky  |  BearStearns  |     20      |   $3    |
|    Pillar    |       GM      |     100     |   $30   |
|    Pillar    |    Chrysler   |     80      |   $22   |
|    Pillar    |    Bricklin   |     200     |   $2    |

我需要编写一个查询,该查询将返回一个表格,其中包含一列中所有资金的名称,以及基金中股票的平均股票价值。平均值应加权,即如果特定基金中有80股A公司股票和20股B公司股票,则A公司的平均股票价值应加权80%。

例如,对于上表,我想得到结果:

___________________________________
|   fundName   |   avgSharePrice  |
___________________________________
|   Sunshine   |         $9       |
|   Brightsky  |         $3       |  
|    Pillar    |       $13.58     |  

2 个答案:

答案 0 :(得分:3)

select fundName , sum(numShares * price) / sum (numShares) avgSharePrice  
from stock_info
group by fundName

sqlfiddle demo

答案 1 :(得分:2)

试试这个:

SELECT fundName, sum(numShares * price) / sum(numShares) AS avgSharePrice  
FROM table GROUP BY fundName;