[oracle] Zeitreihensumme?

ThomasW69

Grünschnabel
Hallo Zusammen

Ich tue mich etwas schwer mit der Bildung von zeitreihensummen.
Meine Zeitreihenwerte liegen in der folgenden Tabelle.

Code:
create table HD_TIMESERIES_VALUES
(
  OID number(20) not null,
  TS_ID   NUMBER(20) not null,
  VTIME   DATE default sysdate not null,
  VALUE   NUMBER(20,6) default 0 not null,
  STATUS1 VARCHAR2(1),
 )

Wenn ich da ein Select mache dann kommt zum Beispiel
Code:
select t.OID, t.ts_id,t.vtime,t.value
 from Hd_Timeseries_Values t
order by t.TS_ID, T.VTime


OID         TS_ID                VTIME                VALUE
10           1           01.06.2012 01:00:00        0.45      (1)
10           1           01.06.2012 02:00:00        0.45      (2)
10           1           01.06.2012 03:00:00        0.45      (3)
10           1           01.06.2012 04:00:00        0.45      (4)
...
10           2           01.06.2012 01:00:00        0.35      (5)
10           2           01.06.2012 02:00:00        0.35      (6)
10           2           01.06.2012 03:00:00        0.35      (7)
10           2           01.06.2012 04:00:00        0.35      (8)
...
11           3           01.06.2012 01:00:00        0.25      (9)
11           3           01.06.2012 02:00:00        0.25      (10)
11           3           01.06.2012 03:00:00        0.25      (11)
11           3           01.06.2012 04:00:00        0.25      (12)

Die Zeitreihen 1 und 2 gehören zum Objekt 10.
Jetzt möchte ich aber eine Objektsumme bilden und zwar zum Beispiel über die ersten 3 Zeitreihen aber zeitstempelweise.
Ich will also in einer Zeile die Objektid das Datum und die Summe der Werte aus Zeitreihe
Also (1) und (5) addiert, (2) und (6) addiert usw. Soll natürlich auch mit mehr als 2 Zeitreihen gehen.

Code:
OID            VTIME                VALUE
10       01.06.2012 01:00:00        0.8      (1+5)
10       01.06.2012 02:00:00        0.8      (2+6)
10       01.06.2012 03:00:00        0.8      (3+7)
10       01.06.2012 04:00:00        0.8      (4+8)
...
11       01.06.2012 01:00:00        0.25      (9)
11       01.06.2012 02:00:00        0.25      (10)
11       01.06.2012 03:00:00        0.25      (11)
11       01.06.2012 04:00:00        0.25      (12)

Wie kann ich das möglichst einfach lösen? Irgendwie hab ich gerade ein Brett vorm Kopf.
Geht das überhaupt mit einer SQL Abfrage oder muss ich mir da eine Funktion schreiben die die Daten aggregiert.
 
Sieht nach einem einfachen GROUP BY mit einem SUM() aus
SQL:
SELECT
    t.oid,
    t.vtime,
    SUM(t.value) AS sum_value
FROM 
    hd_timeseries_values t
GROUP BY
    t.oid,
    t.vtime;
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück