SUM aus Array und Matrix

Hallo zusammen,

ich brauch mal wieder jemanden der mir bei einer Abfrage helfen kann.

Ich habe 3 Tabellen

1.Messpunkte
messpunkt_id |messpunkt_nr
1 | 2345
2 | 4567
3 | 98765
u.s.w.

2.Messpunktwerte
messpunkt_id | zeitraum_id | thema_id | messwert
1 | 2022 | tw | 345
2 | 2022 | tw | 567
3 | 2022 | tw | 7890
2 | 2023 | tw | 587
u.s.w

  1. Matrix
    bezeichnung | thema_id | zeitraum_id | input | output
    aaa | tw | 2022 | {3} | {1,2}
    bbb | tw | 2022 | {4,7,9}| {8}
    aaa | tw | 2023 | {3} | {2,4}

Ereichen möchte ich über eine View, das es sich die Werte zieht und summiert.

SELECT bezeichnung, thema_id, zeitraum_id, SUM (hier komm ich nicht weiter) FROM Matrix WHERE thema_id = ‘tw’ AND zeitraum_id = 2022

Ausgabe
aaa | tw | 2022 | 6978 | Berechnung: input{3:7890} - output{1:345+2:567}
bbb | tw | 2022 | XXX | input{4+7+9} - output{8}

kann mir da jemand ein Beispiel geben?

Vieleb Dank im Voraus

Sowas in der Art denke ich:

select mtx.bezeichnung, mtx.thema_id, mtx.zeitraum_id, i.summe_input - o.summe_output
from matrix mtx
  cross join lateral (
    select sum(mpw.messwert) as summe_input
    from messpunktwerte mpw
    where mpw.messpunkt_id = any(mtx.input)
  ) i
  cross join lateral (
    select sum(mpw.messwert) as summe_output
    from messpunktwerte mpw
    where mpw.messpunkt_id = any(mtx.output)
  ) o;

Ist mal wieder ein schöne Beispiel wie die Verwendung von Arrays das Leben später dann schwerer macht.

1 „Gefällt mir“

Hi Castrop,

ich werde es heute wahrscheinlich nicht mehr schaffen es auszuprobieren, aber ich danke Dir schon mal im voraus, dass du über mein Problem nachgedacht hast.
Ja mit Arrays hast du sicherlich recht, aber den Designer der DB können wir dahingehend nicht mehr fragen.
Ich melde mich nochmal in der neuen Woche um ein Feedback zu geben,

Das ist mir zu pauschal. Arrays sind eine praktische Sache.
Z.B. können Arrays Messwerte kompakt speichern. Im Zweifel muss das sehr performant und platzsparend erfolgen.

Das Problem hier im Thread ist aber, dass Schlüsselwerte in Arrays gespeichert werden, statt in einer n:m Relation.

Also wurde ein gutes Feature eingesetzt, aber an der falschen Stelle sozusagen.

Hallo Castrop,

wollte mich nur noch mal melden und sagen, dass es richtig gut funktioniert.

Vielen Dank nochmal