Heim >Datenbank >MySQL-Tutorial >Wie kann ich mithilfe von Partitionen effizient eine laufende Summe eindeutiger Werte in SQL Server berechnen?
Erzielen einer eindeutigen Anzahl mithilfe von Partitionen und Dense_Rank() OVER
Beim Versuch, mit COUNT() OVER eine laufende Summe eindeutiger Werte zu berechnen, Die Einbeziehung des Schlüsselworts DISTINCT führt häufig zu Fehlern. Während Sie auf einen herkömmlichen Ansatz wie korrelierte Unterabfragen zurückgreifen könnten, gibt es eine effizientere Lösung.
In SQL Server wird das DISTINCT-Schlüsselwort in Partitionsfunktionen nicht direkt unterstützt. Durch die Verwendung der Funktion „dense_rank()“ können Sie jedoch effektiv ein ähnliches Ergebnis erzielen. Die folgende Formel gibt die gewünschte Anzahl für unterschiedliche Werte zurück:
dense_rank() over (partition by [Mth] order by [UserAccountKey]) + dense_rank() over (partition by [Mth] order by [UserAccountKey] desc) - 1
Diese Formel berechnet den dichten Rang jedes UserAccountKey in aufsteigender und absteigender Reihenfolge innerhalb jedes Monats und subtrahiert anschließend eins. Das Ergebnis ist genau die Anzahl der eindeutigen UserAccountKeys innerhalb dieses Monats und liefert Ihnen die laufende Summe, die Sie suchen.
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von Partitionen effizient eine laufende Summe eindeutiger Werte in SQL Server berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!