sql >> Database >  >> RDS >> Mysql

Groepeer OHLC-beursgegevens in meerdere tijdframes - Mysql

Ik weet dat dit een oude vraag is, maar kijk eens naar deze veel "eenvoudigere" oplossing. Er is een truc voor het openen en sluiten van de prijs. Misschien vind je het leuk.

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 is in seconden



  1. WORD LID met GROUP BY in een genormaliseerde database over bronnen, onderwerpen en hoofdstukken

  2. De naam van de brontabel van een rij ophalen bij het opvragen van het bovenliggende element waarvan het erft

  3. Laravel Eloquent vs query builder - Waarom welsprekend gebruiken om de prestaties te verminderen?

  4. Gemiste optimalisaties omzeilen