2012-04-04 4 views
0

Ich versuche meine Hand bei ein paar Tester Datenbank Interview Fragen; Ich komme von einem Kundenseite Hintergrund, ich mache ein paar, um zu kratzen, und ich kämpfe derzeit.Aktuelle Handel Gewinn/Verlust sql Abfrage

Ich habe eine Portfolio-Tabelle mit "TradeID", "Ticker", "Preis" und "Volumen". Derzeit 3 ​​Zeilen in der Tabelle, 2 kauft 10.000 und 1 verkaufen 10.000, alle der gleichen Firma. Ich muss im Grunde den täglichen Portfoliowert zu einem Preis berechnen. Wenn also der aktuelle Preis 1,00 ist, wäre der Wert insgesamt 10.000.

Ich habe versucht jede Unterabfrage möglich, aber kann nicht für das Leben von mir es funktioniert, ich am Ende mit einem Aggregat oder Gruppe durch Fehler, jede Hilfe würde geschätzt werden. Entschuldigung, wenn ich etwas verpasst habe.

Edit: Ich versuche, eine Abfrage wie folgt zu erstellen:

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

from trade 

Edit2: Testdaten Ich habe derzeit & Beispiel leichter macht:

1.0 ist der Preis, zu schließen. Ich habe 3 Trades; trade.volume für die drei wäre +10.000, +10.000, -10.000 - alle gleich Firma trade.price: 1.1 - ist der Preis die Aktie wurde gekauft um

also mit sum ((trade.volume) * 1) ich versuche, 10.000 als der aktuelle Wert zu erhalten von offenen Volumina (sum (trade.volume * trade.price)) würden 11.000 als Kaufpreis

+0

ein SUM() und eine case-Anweisung, um zu bestimmen, welche Zeilen Käufe im Vergleich zu Verkäufen sind, sind –

+0

Hallo Mitch, ich habe die Fallroute nicht genommen; Prost, ich werde es mir ansehen. – DBAWantToBe

+0

Können Sie einige Beispieldaten veröffentlichen ... – Teja

Antwort

0

Wenn der Verkauf negativ ist, dann

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

Ich denke, das ist, was Sie haben:

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

mit Daten:

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 

Gegeben

ich im Grunde des täglichen Portfoliowert gegeben ein Preis erarbeiten muß. Wenn also der aktuelle Preis 1,00 ist, wäre der Wert insgesamt 10.000.

ich denke Sie die aktuelle Netto-Volume wollen, multipliziert mit dem heutigen Preis:

DECLARE @priceNow money 
SET @priceNow = 1.0 

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

Beachten Sie, dass der Transaktionspreis den aktuell im Besitz Wert zu wissen, irrelevant ist.