sql >> Databáze >  >> RDS >> Mysql

Seskupte OHLC-Stockmarket Data do více časových rámců - Mysql

Vím, že je to stará otázka, ale podívejte se na toto mnohem "jednodušší" řešení. Existuje trik pro otevírací a zavírací cenu. Mohlo by se vám to líbit.

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  

období je v sekundách



  1. PostgreSQL vs. Oracle:Rozdíl v nákladech, snadnost použití a funkčnost

  2. Spouštěč aktualizace SQL pouze při změně sloupce

  3. MySQL CURRENT_TIMESTAMP při vytvoření a aktualizaci

  4. Vytvořit, pokud záznam neexistuje, jinak aktualizovat?