2016-05-03 14 views
0

Ich Aufrechterhaltung Aktienkurse in meiner Datenbank und dies ist meine DatenbankstrukturWie berechnen Bestandsveränderung Prozentsatz Wert ändern

CREATE TABLE `sector_wise` (
    `symbol_name` varchar(50) DEFAULT NULL, 
    `sector_name` varchar(50) DEFAULT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ; 

CREATE TABLE `historical_data` (
    `symbol_name` varchar(70) DEFAULT NULL, 
    `current_day` date DEFAULT NULL, 
    `open_val` decimal(15,2) DEFAULT NULL, 
    `high_val` decimal(15,2) DEFAULT NULL, 
    `low_val` decimal(15,2) DEFAULT NULL, 
    `close_val` decimal(15,2) DEFAULT NULL, 
    `last_val` decimal(15,2) DEFAULT NULL, 
    `prevclose_val` decimal(15,2) DEFAULT NULL, 
    `volume` varchar(30) DEFAULT 'NA' 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ; 

Insert Scripts:

Insert INTO sector_wise ('symbol_name','sector_name') VALUES ('VISESHINFO','Agriculture'); 



Insert INTO historical_data ('symbol_name','current_day','open_val','high_val','low_val','close_val','last_val','prevclose_val','volume') VALUES ('VISESHINFO','2016-05-03',0.05,0.10,0.05,0.05,0.05,0.10,45814.95); 

Dies ist die Abfrage i versucht

SELECT sw.symbol_name AS symbol_name, 
     hd.current_day AS curr_day, 
     hd.open_val AS open_value, 
     hd.high_val AS high_value, 
     hd.low_val AS low_val, 
     hd.close_val AS close_val, 
     hd.prevclose_val AS prevclose_val, 
     (close_val-prevclose_val)/close_val*100 AS per_change 
FROM sector_wise sw, 
    historical_data hd 
WHERE sw.symbol_name = hd.symbol_name 
    AND sw.sector_name = 'Agriculture' 
    AND hd.current_day = 
    (SELECT max(current_day) 
    FROM historical_data) 
ORDER BY per_change; 

Das Ergebnis habe ich nach der Ausführung der obige Abfrage ist eigentlich falsch ist, sollte der Prozentsatz chnage -50.00 sein und nicht -100,00

symbol_name curr_day  open_value high_value low_value close_val prevclose_val percentage_change 
VISESHINFO 2016-05-03  0.05   0.10   0.05   0.05   0.10     -100.000000 

Könnten Sie mir bitte sagen, wo genau der Fehler ist die prozentuale Veränderung

bei der Berechnung
+0

Wo und wie werden Sie die Berechnung Preisvariation ? – datelligence

+0

an dieser Linie (close_val-prevclose_val)/close_val * 100 AS per_change – Pawan

Antwort

1

(close_val-prevclose_val)/close_val * 100 würde nach unten übersetzen:

((0.05-0.10)/0.05))*100 

was gleich -100 ist. Bist du dir der Formel sicher? Wenn es für Preisvariation ist, sollte das prevclose_val in der Formel nicht als Nenner verwendet werden?

+0

ist dies eher eine Frage auf Ihrer Formel anstatt eine Frage Ihres SQL-Skript. – Lane

+0

ya, vielen dank, die prevclose_val sollte in der Formel als Nenner verwendet werden – Pawan

0

Ich denke, dass Sie nur tun müssen, um (close_val/prev_close_val) * 100

0

haben, dass: Close-Wert = 0,05 Prev_close Wert = 0,10

Delta = 1-close_value/prev_close 
Verwandte Themen