Ich habe ein Problem mit der Berechnung einer Variablen. Stellen wir uns vor, wir hätten eine Tabelle mit ID, Datum und Gehalt. Und jetzt ist es meine Aufgabe, für jeden Tag das durchschnittliche Gehalt in den letzten 6 Monaten herauszufinden. Gibt es eine andere Möglichkeit, diesen Wert anstelle des kartesischen Produkts zu erhalten?Wie bekomme ich den Durchschnittswert in den letzten 6 Monaten
Meine vorgeschlagene Auflösung:
select ID, Date, AVG(Salary2)
from
(
select tab1.ID as ID, tab1.Date as Date, tab2.Date as Date2, tab2.Salary as Salary2
from table tab1
**JOIN**
(select ID, Date, Salary from table) tab2
on tab1.ID = tab2.ID
and tab1.Date >= tab2.Date
and add_months(tab2.Date, 5) >= tab1.Date
) group by ID, Date;
Ich gehe davon aus, dass dieser Ansatz nicht wirksam ist. Ich denke, dass es in Bezug auf große Tische zu zeitaufwendig ist.
Gibt es einen anderen Ansatz? Oder wie soll ich dieses Skript optimieren?
Danke
Könnten Sie bitte Beispieldaten bereitstellen? – Conqueror
und erwartetes Ergebnis? –