Heim >Datenbank >MySQL-Tutorial >Wie berechnet man eine laufende Summe eindeutiger Werte in SQL Server-Partitionen?
PARTITION-Funktion COUNT() OVER mit DISTINCT
Mit der PARTITION-Funktion mit COUNT() kann eine laufende Summe unterschiedlicher Werte berechnet werden eine Herausforderung in SQL Server. Während das Schlüsselwort DISTINCT in Aggregatfunktionen unterstützt wird, kann es nicht innerhalb von Partitionsfunktionen verwendet werden. Diese Einschränkung kann frustrierend sein, insbesondere wenn Sie versuchen, laufende Summen unterschiedlicher Werte zu berechnen.
Eine herkömmliche Methode zur Berechnung eindeutiger Zählungen ist die Verwendung einer korrelierten Unterabfrage. Dieser Ansatz kann jedoch ineffizient und schwierig zu warten sein.
Glücklicherweise gibt es eine einfache Lösung mit dense_rank():
dense_rank() over (partition by [Mth] order by [UserAccountKey]) + dense_rank() over (partition by [Mth] order by [UserAccountKey] desc) - 1
Dieser Ausdruck berechnet die laufende Summe der einzelnen UserAccountKeys innerhalb jedes einzelnen Monat. Dabei werden die Werte zunächst in aufsteigender Reihenfolge, dann in absteigender Reihenfolge sortiert und schließlich eins von der Summe der beiden Ränge subtrahiert. Dieser Ansatz eliminiert effektiv doppelte Werte und liefert gleichzeitig eine laufende Zählung der unterschiedlichen Werte.
Das obige ist der detaillierte Inhalt vonWie berechnet man eine laufende Summe eindeutiger Werte in SQL Server-Partitionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!