Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak obliczyć procentowy wzrost z poprzedniego wiersza/dzień po złożonej Grupie według?

Proszę spojrzeć na ten odnośnik:SQLFIDDLE

Więc twoja bieżąca tabela z OHLC jest używana do wyprowadzania px_change, px_pct :) Wyniki zostały rounded aby pokazać zmianę 4 miejsc po przecinku, a także procent.Null służy do pokazywania braku zmiany ceny/sztuki, ponieważ wartość null jest lepszą reprezentacją braku zmiany ceny niż zerowa zmiana ceny;)

Zapytanie:

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

Wyniki:

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%

** ZAKTUALIZOWANY O ZDJĘCIE, ABY POKAZAĆ NAWIASY ZGODNIE Z PROŚBĄ OP W KOMENTARZACH ** :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy klucz obcy może działać jako klucz podstawowy?

  2. Błąd zestawu danych MySQL programu Visual Studio

  3. plik nie ładuje się w ajax php mysql

  4. ORDER BY RAND() alternatywa

  5. BŁĄD 2002 (HY000):Nie można połączyć się z lokalnym serwerem MySQL przez gniazdo '/var/lib/mysql/mysql.sock'