Datensätze gruppieren



  • Hallo Leute,

    ich habe eine Tabelle mit Werten, die minutenweise gespeichert sind.

    Was ich brauche, sind jeweils alle 5-Minuten aus der Tabelle.

    Der Reihe nach lassen sich die Daten auswerten und zusammengruppieren. Problematisch ist aber ca 5 Mio. Datensätze. Es würde zu lange dauern die Daten zurück in die DB zu speichern.

    Meine Überlegung ist, ob es möglich ist in einem Select die Daten nach alle 5 Minuten zu gruppieren (GROUP BY ...). Wenn ja, wie?

    Wenn das nicht geht, ist die andere Möglichkeit eine SP mit Cursor. Das würde gehen, ist aber schwieriger umzusetzen als ein Select.

    Kann jemand helfen, mit einem passenden Ansatz? Vielen Dank im Voraus



  • Ich glaub' nicht dass nahand dieser Beschreibung jemand verstehen kann was du eigentlich machen willst.
    Versuch nochmal zu beschreiben worum es geht, so dass man es auch verstehen kann.



  • Wie liegt denn dein Zeitstempel vor?
    Die einfachste Lösung ist die, dass du den Zeitstempel der Einträge als Integer durch 300 teilst und nach dem Divisionsergebnis gruppierst.

    Einfach mal so in den Raum geworfen.



  • Naja gut, einfach nach Datum zu gruppieren sollte ja ... einfach sein, nen?
    Allerdings kann man dann meist genau so gut nen (sortierten) full-scan machen, und die Daten in der Applikation gruppieren.
    (Ausser die Datensätze wären riesig und die Netzwerkanbindung des SQL Servers wäre langsam.)



  • Ok, Danke erst mal.

    Es handelt sich um Kurs-Daten auf M1. Habe historische Daten von www.histdata.com geladen und in eine MySQL-Db importiert. Diese brauche ich in M5 um daraus Charts zu erstellen. Soviel zum Problem...

    Der Ansatz mit dem Zeitstempel als Integer mit 300 teilen würde gehen, glaub ich. Oder ich kann mir vorstellen auch mit Modulo rechnen zu können.

    Das wäre aber nur der erste Teil. Wie ich den Rest zuordnen kann, weiß ich nicht. Max(High) und Min(Low) würde gehen, aber Open und Close hab ich echt keine Ahnung.

    Ich werde die Daten erst mal außerhalb der Datenbank aufbereiten (geht einfacher), und wenn ich diese in der DB brauche, kann ich diese immer noch importieren.

    Würde mich aber dennoch interessieren, ob es möglich ist in einem Select die Daten so aufzubereiten. So könnte man daraus dann auch andere TimeFrames generieren.



  • Du schreibst immer noch nicht welche Daten du eigentlich selektieren/ausrechnen willst.
    "Open und Close hab ich echt keine Ahnung" -- daraus soll jetzt jemand ableiten können was du brauchst/möchtest?
    Nö.



  • Was ist jetzt daran so schwer zu verstehen 😕

    Ein Link mit den Daten ist beigefügt. Wenn Du keine Lust oder kein Interesse hast, sich damit zu beschäftigen, dann lass es doch einfach.

    Ich habe auch angedeutet, das ich das Prob. anders lösen werde... Schreibe ich jetzt unverständlich? Oder kannst Du nicht mal "richtig" lesen?

    Wer die Problematik kennt und eine passende Lösung anbieten kann, darf sich gern hier melden... Sonst bitte keine weiteren "Aufklärungs"-Gesuche. Danke!



  • @sql
    gfy, gfy.


Anmelden zum Antworten