2016-05-03 130 views
0

我保持股票价格在我的数据库,这是我的数据库结构如何计算股票的百分比变化值更改

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 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); 

这是查询我试过

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; 

结果我得到后执行以上查询是其实是错误的,这一比例chnage应该是-50.00,而不是-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 

你能告诉我到底哪儿错就错在计算百分比变化

+0

在哪里,你是如何计算的价格变化? – datelligence

+0

在这一行(close_val-prevclose_val)/ close_val * 100 AS per_change – Pawan

回答

1

(close_val-prevclose_val)/close_val * 100将转化为如下:

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

其等于-100。你确定这个公式吗?如果是价格变动,prevclose_val是不是应该用作公式中的分母?

+0

这是更多关于你的公式的问题,而不是你的sql脚本的问题。 – Lane

+0

ya,非常感谢,prevclose_val应该在公式中用作分母 – Pawan

0

我认为,你只需要做(close_val/prev_close_val)* 100

0

有了这样的: 关闭值= 0.05 Prev_close值= 0.10

Delta = 1-close_value/prev_close