Vui lòng xem tham chiếu này: SQLFIDDLE
Vì vậy, bảng hiện tại của bạn với OHLC được sử dụng để lấy px_change, px_pct:) Kết quả đã được rounded
để hiển thị 4 dấu thập phân về thay đổi cũng như tỷ lệ phần trăm. Null được sử dụng để hiển thị không thay đổi giá / pct vì null là một đại diện tốt hơn cho việc không thay đổi giá và không có thay đổi giá nào;)
Truy vấn:
select ticker, date_format(date,'%m-%d-%Y') as date, open, high,low,close,
pxchange,concat(round(pxpct*100,4),'%') pxpct
from (select case when ticker <> @pxticker
then @pxclose := null end, p.*, ([email protected]) as pxchange,
([email protected])/@pxclose as pxpct, (@pxclose := close),
(@pxticker := ticker) from pricing p
cross join
(select @pxclose := null, @pxticker := ticker
from pricing
order by ticker, date limit 1) as a
order by ticker, date ) as b
order by ticker, date asc
Kết quả:
TICKER DATE OPEN HIGH LOW CLOSE PXCHANGE PXPCT
AAAE 11-26-2012 0.01 0.01 0.01 0.01 (null) (null)
AAAE 11-27-2012 0.013 0.014 0.0083 0.014 0.004 40.0000%
AAAE 11-28-2012 0.014 0.0175 0.014 0.0165 0.0025 17.8571%
AAAE 11-29-2012 0.0175 0.0175 0.0137 0.0137 -0.0028 -16.9697%
AAMRQ 11-26-2012 0.4411 0.53 0.4411 0.529 (null) (null)
AAMRQ 11-27-2012 0.51 0.511 0.461 0.495 -0.034 -6.4272%
AAMRQ 11-28-2012 0.482 0.49 0.43 0.464 -0.031 -6.2626%
AAMRQ 11-29-2012 0.4505 0.459 0.4411 0.459 -0.005 -1.0776%
AAMRQ 11-30-2012 0.45 0.457 0.4455 0.4568 -0.0022 -0.4793%
** ĐƯỢC CẬP NHẬT BẰNG HÌNH ẢNH ĐỂ BIỂU DIỄN MỖI NGƯỜI THEO YÊU CẦU CỦA MỖI NGƯỜI HOẠT ĐỘNG TRONG Ý KIẾN ** :)