Heim >Datenbank >MySQL-Tutorial >Wie kann ich mithilfe von Partitionen effizient eine laufende Summe eindeutiger Werte in SQL Server berechnen?

Wie kann ich mithilfe von Partitionen effizient eine laufende Summe eindeutiger Werte in SQL Server berechnen?

Linda Hamilton
Linda HamiltonOriginal
2025-01-03 22:26:40447Durchsuche

How Can I Efficiently Calculate a Running Total of Distinct Values in SQL Server Using Partitions?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn