我正在尝试几个测试人员数据库面试问题;来自客户端背景,我正在做一些起床,我正在努力。
我有一个包含'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
答案 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'
请注意,交易价格与了解当前拥有的值无关。