当前的交易盈亏sql查询

时间:2012-04-04 23:45:42

标签: sql-server tsql

我正在尝试几个测试人员数据库面试问题;来自客户端背景,我正在做一些起床,我正在努力。

我有一个包含'TradeID','Ticker','Price'和'Volume'的投资组合表。目前表中有3行,10,000个购买10,000个,10,000个卖1个,所有这些都是同一家公司。我基本上需要根据价格计算每日投资组合价值。因此,如果当前价格为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 - 是

买入股票的价格

所以总和((trade.volume)* 1)我试图从开放量中获得10,000作为当前值  (sum(trade.volume * trade.price))购买价格为11,000

2 个答案:

答案 0 :(得分:0)

如果卖出是负面那么

Select ticket, sum(volume*trade) from table group by ticket

答案 1 :(得分: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。

你想要当前的网Volume,乘以今天的价格:

DECLARE @priceNow money
SET @priceNow = 1.0

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

请注意,交易价格与了解当前拥有的无关。