sql >> Database teknologi >  >> RDS >> Mysql

Gruppér OHLC-aktiemarkedsdata i flere tidsrammer - Mysql

Jeg ved godt, at dette er et gammelt spørgsmål, men se på denne meget "enkle" løsning. Der er et trick til åben og lukke pris. Du kan måske lide det.

SELECT
  FLOOR(MIN(`timestamp`)/"+period+")*"+period+" AS timestamp,
  SUM(amount) AS volume,
  SUM(price*amount)/sum(amount) AS wavg_price,
  SUBSTRING_INDEX(MIN(CONCAT(`timestamp`, '_', price)), '_', -1) AS `open`,
  MAX(price) AS high,
  MIN(price) AS low,
  SUBSTRING_INDEX(MAX(CONCAT(`timestamp`, '_', price)), '_', -1) AS `close`
FROM transactions_history -- this table has 3 columns (timestamp, amount, price)
GROUP BY FLOOR(`timestamp`/"+period+")
ORDER BY timestamp  

periode er i sekunder



  1. Vælg seneste post i tabel (datotid-felt)

  2. Kan jeg paginere en brugerdefineret forespørgsel uden at tilsidesætte standardpagineringen?

  3. PostgreSQL krydstabulatorforespørgsel

  4. Indsæt alle værdier af en tabel i en anden tabel i SQL