Hallo zusammen,
ich bin relativ neu im Bereich SQL und scheitere zur Zeit daran meine Daten zu verdichten. Konkret geht es um Aktienkurse. Folgende Daten liegen zu Grunde:
date | open | high | low | close
---------------------------------------
2010-01-15, 6.88, 6.99, 6.71, 6.75
2010-01-14, 6.92, 7.01, 6.85, 6.90
2010-01-13, 6.62, 6.86, 6.57, 6.78
2010-01-12, 6.75, 6.82, 6.54, 6.60
2010-01-11, 6.78, 6.92, 6.76, 6.80
2010-01-08, 7.01, 7.03, 6.68, 6.72
2010-01-07, 7.55, 7.55, 7.00, 7.07
2010-01-06, 7.77, 7.84, 7.68, 7.71
2010-01-05, 7.89, 7.89, 7.67, 7.72
2010-01-04, 7.71, 7.91, 7.71, 7.84
Ich würde nun gerne aus den Tagesdaten Wochendaten erzeugen. Heisst, ich möchte folgendes Ergebnis:
startDate | endDate | open | high | low | close
----------------------------------------------------------
2010-01-04, 2010-01-08, 7.71, 7.91, 6.68, 6.72
2010-01-11, 2010-01-15, 6.78, 6.99, 6.54, 6.75
Mit folgender Abfrage bekomme ich zumindest schon mal startDate, endDate, high und low:
SELECT MIN(date), MAX(date), MAX(high), MIN(low)
FROM table
GROUP BY STRFTIME('%Y-%W',date)
Aber es will mir einfach nicht gelingen, noch die open- und close-Werte in die Abfrage reinzubekommen. open ist dabei immer der open-Wert des startDate und close ist immer der close-Wert des endDate. Vermutlich lässt sich das durch einen geschickten Self-Join hinbekommen, aber ich weiss nicht wie...
Weiss jemand rat? Ich hoffe, ich habe einigermaßen verständlich dargestellt, was ich vor habe.
Vielen Dank schon mal im Vorraus.
PS: Ich verwendet SQLite.
ich bin relativ neu im Bereich SQL und scheitere zur Zeit daran meine Daten zu verdichten. Konkret geht es um Aktienkurse. Folgende Daten liegen zu Grunde:
date | open | high | low | close
---------------------------------------
2010-01-15, 6.88, 6.99, 6.71, 6.75
2010-01-14, 6.92, 7.01, 6.85, 6.90
2010-01-13, 6.62, 6.86, 6.57, 6.78
2010-01-12, 6.75, 6.82, 6.54, 6.60
2010-01-11, 6.78, 6.92, 6.76, 6.80
2010-01-08, 7.01, 7.03, 6.68, 6.72
2010-01-07, 7.55, 7.55, 7.00, 7.07
2010-01-06, 7.77, 7.84, 7.68, 7.71
2010-01-05, 7.89, 7.89, 7.67, 7.72
2010-01-04, 7.71, 7.91, 7.71, 7.84
Ich würde nun gerne aus den Tagesdaten Wochendaten erzeugen. Heisst, ich möchte folgendes Ergebnis:
startDate | endDate | open | high | low | close
----------------------------------------------------------
2010-01-04, 2010-01-08, 7.71, 7.91, 6.68, 6.72
2010-01-11, 2010-01-15, 6.78, 6.99, 6.54, 6.75
Mit folgender Abfrage bekomme ich zumindest schon mal startDate, endDate, high und low:
SELECT MIN(date), MAX(date), MAX(high), MIN(low)
FROM table
GROUP BY STRFTIME('%Y-%W',date)
Aber es will mir einfach nicht gelingen, noch die open- und close-Werte in die Abfrage reinzubekommen. open ist dabei immer der open-Wert des startDate und close ist immer der close-Wert des endDate. Vermutlich lässt sich das durch einen geschickten Self-Join hinbekommen, aber ich weiss nicht wie...
Weiss jemand rat? Ich hoffe, ich habe einigermaßen verständlich dargestellt, was ich vor habe.
Vielen Dank schon mal im Vorraus.
PS: Ich verwendet SQLite.
Comment