【发布时间】:2014-05-18 17:56:44
【问题描述】:
我有一张公司表,结构如下:
+------------+--------------+-----------+--------+-----------------------------+
| ticker | total_shares | institute | public | sector |
+------------+--------------+-----------+--------+-----------------------------+
| 1JANATAMF | 200000000 | 30.00 | 45.00 | Mutual Funds |
| 8THICB | 5000000 | 0.00 | 0.00 | Mutual Funds |
| AAMRATECH | 55369395 | 28.00 | 42.00 | IT Sector |
| ABB1STMF | 162615643 | 46.44 | 33.56 | Mutual Funds |
| ABBANK | 532459152 | 54.86 | 30.01 | Bank |
| ACI | 28661768 | 37.73 | 28.23 | Pharmaceuticals & Chemicals |
| ACIFORMULA | 45000000 | 22.77 | 11.21 | Pharmaceuticals & Chemicals |
| ACIZCBOND | 267170 | 60.00 | 40.00 | Corporate Bond |
| ACTIVEFINE | 69000000 | 20.80 | 64.42 | Pharmaceuticals & Chemicals |
| AFCAGRO | 50000000 | 48.11 | 21.60 | Pharmaceuticals & Chemicals |
| AFTABAUTO | 95732422 | 47.49 | 22.01 | Engineering |
| AGNISYSL | 51798982 | 16.33 | 70.92 | IT Sector |
| AGRANINS | 24157650 | 18.30 | 43.05 | Insurance |
| AIBL1STIMF | 100000000 | 76.31 | 13.69 | Mutual Funds |
| AIMS1STMF | 41450000 | 0.00 | 0.00 | Mutual Funds |
| AL-HAJTEX | 12691843 | 4.19 | 71.76 | Textile |
| ALARABANK | 946958501 | 10.07 | 46.88 | Bank |
+------------+--------------+-----------+--------+-----------------------------+
另一个价格表:
+------------+--------+--------+------------+
| ticker | open | high | price_date |
+------------+--------+--------+------------+
| AAMRATECH | 29.80 | 30.20 | 2014-05-04 |
| ABBANK | 27.50 | 27.50 | 2014-05-04 |
| ACI | 235.00 | 244.50 | 2014-05-04 |
| ACIFORMULA | 86.00 | 87.60 | 2014-05-04 |
| ACTIVEFINE | 69.00 | 70.00 | 2014-05-04 |
| BANGAS | 509.50 | 509.50 | 2014-05-04 |
| BANKASIA | 18.00 | 18.40 | 2014-05-04 |
+------------+--------+--------+------------+
当然数据是为了某种目的而被短路的。现在我想找到开盘的加权价格。这个公式是
A = open*((total_share*(institue/100)+(total_share*(public/100))
它们按部门的 A 总和,例如所有股票代码属于共同基金的总和。然后除以单个股票代码,例如 1JANATAMF/共同基金的总和以找到权重。
我用过这个查询:
select c.ticker,
p.open*(c.total_shares*(c.institute/100)+c.total_shares*(c.public/100)) as cap
from company as c
left join price as p
on p.ticker =c.ticker
where p.price_date = '2014-05-04';
但找不到按扇区求和并找到权重的方法。
编辑:
输出会像
股票代码,A/(按部门分组的 A 的总和)
其中,A是根据ticker制定的值
输出如下:
+------------+--------------+--------------+
| ticker | sum(a) | weight |
+------------+--------------+--------------+
| 1JANATAMF | 5700000000 | 150078540 |
【问题讨论】:
-
您的权重计算有点困惑,即(1JANATAMF)字符串值如何被扇区总和等数值整除,您能清除它吗?
-
您误解了我从上述查询或 A 获得的数字结果。例如 1JANATAMF 的 A 说 50 并且它属于共同基金,共同基金领域还有许多其他公司,例如 1JANATAMF,我想要按扇区计算所有 A 的总和,然后通过这种方式计算权重 A/该扇区的总和。
-
请编辑您的问题并为给定数据提供您想要的结果。
-
编辑并提供了清晰的输出