sql SUM(SUM(xy) / SUM(xy)) möglich?

...komplette Frage anzeigen

2 Antworten

Geschachtelte Setfunktionen sind an sich nur bei analytischen Funktionen sinnvoll. Ansonsten müßte man eine Subquery machen und dann außen noch eine Set Funktion also etwa so

select sum(H) from 
( select sum(kosten)/sum(anzahl) as H
from Bestellung
group by ... );


das Ganze ist natürlich nur mit einer Gruppierung sinnvoll, da sonst ja ohnehin nur eine Zeile herauskommen würde.





Antwort bewerten Vielen Dank für Deine Bewertung

das äußere sum muss weg, dann passt es.

Antwort bewerten Vielen Dank für Deine Bewertung
justanumber 08.10.2017, 14:43

Danke für deine Antwort. Leider hast du anscheinend die Frage nicht richtig verstanden oder weißt nicht was ich genau haben will. Nehmen wir an, wenn ich das äußerste SUM weglasse und bei SUM(xy) / SUM(xy) kommen 4 ergebnisse raus. Nun will ich diese aber addiert haben, deswegen das äußerste SUM

0
freejack75 08.10.2017, 14:45
@justanumber

ok, dann müsstest du das Zwischenergebnis wie eine Tabelle behandeln*, dem Ausdruck sum(xy)/sum(xy) einen Namen geben, und dann über den einen eigenen Select mit sum machen.

* das ginge z.B. mit einer View oder Common Table Expressions

0
freejack75 08.10.2017, 14:56
@freejack75

das steht in der SQL-Referenz-Doku vom DB-System. Die gängigen (MS SQL Server, Postgres, sqlite) können das.

0
justanumber 08.10.2017, 15:03
@freejack75

ich check das nicht so ganz, könntest du mir zeigen, wie das mit dem oberen Beispielt zu machen wäre?

0
freejack75 08.10.2017, 15:08
@justanumber

Du machst erst mal den select mit sum(a)/sum(b), bis der funktioniert.

Dann schreibst Du (angenommen der select von vorhin hat drei Spalten):

with t1 (s1, s2, s3) as (select ...) select sum(s1) from t1

D.h. Du kannst das Ergebnis über die CTE dann wie eine Tabelle verwenden und darüber dann nochmal summieren.

0

Was möchtest Du wissen?