0

我正在尝试几个测试员数据库面试问题;来自客户端背景,我正在做一些事情以达到标准,我目前正在努力。

我有一个包含“TradeID”、“Ticker”、“Price”和“Volume”的投资组合表。目前表中有 3 行,2 次买入 10,000 和 1 次卖出 10,000,都是同一家公司。我基本上需要计算出给定价格的每日投资组合价值。因此,如果当前价格为 1.00,则总价值将为 10,000。

我已经尝试了所有可能的子查询,但我一生都无法让它工作,我最终错误地得到了一个聚合或组,任何帮助将不胜感激。抱歉,如果我错过了什么。

编辑:我正在尝试创建这样的查询:

select
 sum
((sum(trade.volume) * 1.0) -
  (sum(trade.volume * trade.price)))

from trade 

Edit2:我目前拥有的测试数据并使示例更容易:

1.0 是收盘价。我有 3 笔交易;这三个的 trade.volume 将是 +10,000、+10,000、-10,000 - 都是同一家公司 trade.price : 1.1 - 是购买股票的价格

所以使用 sum((trade.volume) *1) 我试图获得 10,000,因为未平仓交易量 (sum(trade.volume * trade.price)) 的当前值将是 11,000 作为购买价格

4

2 回答 2

0

如果卖出是负数,那么

Select ticket, sum(volume*trade) from table group by ticket
于 2012-04-05T01:00:55.960 回答
0

我认为这就是你所拥有的:

CREATE TABLE Portfolio (
    TradeID int,
    Ticker varchar(10),    -- the company identifer
    Price money,
    Volume int,    -- probably not actually an int
)

有数据:

INSERT Portfolio VALUES ( 1, 'ACME', 1.1, 10000) -- a buy
INSERT Portfolio VALUES ( 2, 'ACME', 1.1, 10000) -- a buy
INSERT Portfolio VALUES ( 3, 'ACME', 1.1, -10000) -- a sell

给定

我基本上需要计算出给定价格的每日投资组合价值。因此,如果当前价格为 1.00,则总价值将为 10,000。

认为您想要当前的 netVolume乘以今天的价格:

DECLARE @priceNow money
SET @priceNow = 1.0

DECLARE @currentValue money
SELECT @currentValue = @priceNow * SUM(Volume) FROM Portfolio WHERE Ticker = 'ACME'

请注意,交易价格与知道当前拥有的价值无关。

于 2012-04-05T08:08:30.557 回答