Por favor, dê uma olhada nesta referência:SQLFIDDLE
Portanto, sua tabela atual com OHLC é usada para derivar o px_change, px_pct :)Os resultados foram
rounded
para mostrar 4 casas decimais em alteração, bem como porcentagem.Null é usado para mostrar nenhuma alteração de preço/pct, pois nulo é uma representação melhor de nenhuma alteração de preço do que ter uma alteração de preço zero;) Consulta:
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
Resultados:
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%
** ATUALIZADO COM UMA FOTO PARA MOSTRAR OS PARÊNTESES CONFORME SOLICITAÇÃO DO OP NOS COMENTÁRIOS ** :)