sql >> Databasteknik >  >> RDS >> Mysql

Gruppera OHLC-Stockmarket Data i flera tidsramar - Mysql

Jag vet att detta är en gammal fråga, men titta på denna mycket "enklare" lösning. Det finns ett knep för öppet och stängt pris. Du kanske gillar 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  

perioden är i sekunder



  1. MySQL Välj WHERE IN given ordning

  2. Unik begränsning som tillåter tomma värden i MySQL

  3. Övervakning av Percona-distribution för PostgreSQL - nyckelmått

  4. Hur man skapar en kolumn som inte är null i en vy