Mysql
 sql >> Base de données >  >> RDS >> Mysql

Regrouper les données OHLC-Stockmarket en plusieurs périodes - Mysql

Je sais que c'est une vieille question, mais regardez cette solution beaucoup plus "simple". Il existe une astuce pour le prix d'ouverture et de clôture. Cela pourrait vous plaire.

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  

la période est en secondes