Frage zu Partition by

Math_Gr

Neuer Benutzer
Beiträge
2
Hallo ihr lieben User
Ich habe folgendes Problem:

Ich muss einen Anteilswert von bestimmten Gruppen innerhalb einer Spalte ausrechnen.

Die zugrunde liegende Tabelle sieht wie folgt aus:

Wert Code Land
10000 1 DE
20000 2 GB
30000 3 LI

Meine Abfrage sieht so aus und liefert klarerweise nicht das gewünschte Ergebnis:

Code:
select Wert/ sum(Wert) OVER (partition by Code order by Code) as Anteil
from Tabelle1      
where Land not in('CH','LI')  or Land  in ('CH','LI')

Dabei muss ich nach dem Code und dem Land (bzw. in CH/LI oder nicht in CH/LI) partitionieren. Den Code müsste ich nun in Untergruppen unterteilen (1 und 2 als eine Grp und 3 als andere Gruppe).

Kennt jemand eine Möglichkeit dies umzusetzen?

Danke für eure Hilfe!


PS. die Daten sind logischerweise nur Beispiele. Es würde sich um ca. 250000 Datensätze handeln.
 
Werbung:
Also dein WHERE ist ja schonmal sinnlos und ORDER BY in einer Summen-Funktion wird dir auch nicht helfen. Ich glaube du suchst eher:
Code:
SELECT    t.Wert / sum(t.Wert) OVER PARTITION BY t.Code) AS Anteil
FROM    (    SELECT    Wert,
            (    CASE
                WHEN Land IN ('CH','LI')
                THEN 1
                ELSE 2
                END ) AS Code
        FROM    Tabelle1 ) t
Das ist jetzt aber mal völlig ungetestet und Freitag.
 
Werbung:
Zurück
Oben