2012-04-04 42 views
0

我正在努力嘗試一些測試人員數據庫面試問題;來自客戶端背景,我正在做一些準備工作,我目前正在掙扎。當前貿易利潤/損失sql查詢

我有一個包含'TradeID','Ticker','Price'和'Volume'的投資組合表。目前表中有3排,2個是10,000個,1個是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 - 是股票的買入價格爲

so with sum((trade.volume)* 1)我試圖讓萬從打開的卷的當前值 (SUM(trade.volume * trade.price))將11000作爲購買價格

+0

一個SUM()和一個case語句來確定哪些行是買賣對於銷售就足夠了 – 2012-04-04 23:48:27

+0

嗨米奇,我沒有采取案例路線;歡呼聲,我會看看。 – DBAWantToBe 2012-04-04 23:49:30

+0

你可以發佈一些示例數據... – Teja 2012-04-05 00:00:19

回答

0

如果賣的是否定的,則

Select ticket, sum(volume*trade) from table group by ticket 
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' 

注意,交易價格無關知道目前擁有