【发布时间】:2016-03-15 18:45:01
【问题描述】:
我有两张表,一张代表证券所有权(每种证券可能有不止一种持有),另一种代表每种证券的分配(每种证券可能有多种分配)。我想计算每种证券支付的总分配额。
因此,给定输入
Security ID shares held
44 100
44 100
45 200
55 300
Security ID distribution
44 0.05
45 0.06
55 0.07
55 0.03
44 0.05
输出应该是
Security ID total distribution
44 20
45 12
55 30
问题是,SUM(A.sharecount)*SUM(B.distribution) 最终会重复计算某些位置,我得到的答案太大 [(80, 12, 60) 而不是 (20, 12 , 30) 在上面的例子中]。
SQLFiddle 与我的示例输入和失败的 SQL 可以在 http://sqlfiddle.com/#!9/e3caa/3/0 看到
感谢所有建议。
【问题讨论】:
-
鉴于这种结构,你怎么知道哪个分布指的是哪个持有?
-
@MatteoTassinari 分配适用于共享其证券 ID 的每个头寸。在上面,证券 44 有两个头寸,每个头寸各 100 股,因此需要对 200 股进行分配。证券 44 有两次分配,总计每股 0.10 美元,因此证券 44 应支付总计 20 美元。
-
你能用数学计算得到 20 美元吗?因为
100*0.05 = 5和5x2 = $10 -
@JuanCarlosOropeza 证券 44 中有两个职位,每个职位有 100 股,因此总股数 = 200。证券 44 有两个分配,总计每股 0.10 美元。最终数学,200*.0.10 = 20 美元。
-
我猜他的意思是
200 * 0.10$ = 20$或200*(0.05+0.05)