Eindeutige Zählung mit Partitionsfunktionen: COUNT() OVER vs. DISTINCT
Diese Frage untersucht die Verwendung der OVER-Klausel von SQL bei der Berechnung eindeutiger Zählungen . Der Benutzer versucht, die Funktion COUNT() OVER (PARTITION BY ...) mit dem Schlüsselwort DISTINCT zu verwenden, um eine laufende Summe eindeutiger Benutzer innerhalb eines bestimmten Monats zu erhalten. Bei diesem Ansatz tritt jedoch ein Fehler auf.
Der Fehler tritt auf, weil die OVER-Funktionen von SQL Server derzeit das DISTINCT-Schlüsselwort in der Partitionsklausel nicht unterstützen. Daher ist der Benutzer nicht in der Lage, während der Partitionierung eine eindeutige Zählung anzuwenden.
Eine Lösung für dieses Problem ist die Verwendung der Funktion „dense_rank()“. Der folgende Ausdruck erzielt die gewünschte Ausgabe:
dense_rank() over (partition by [Mth] order by [UserAccountKey]) + dense_rank() over (partition by [Mth] order by [UserAccountKey] desc) - 1
Durch zweimaliges Anwenden von „dense_rank()“ und Subtrahieren der Ergebnisse zählt der Ausdruck effektiv die Anzahl der unterschiedlichen Werte in der angegebenen Spalte innerhalb jedes Monats. Diese Methode bietet die gleiche Funktionalität wie die ursprünglich vorgesehene COUNT() OVER (PARTITION BY ...) mit DISTINCT.
Das obige ist der detaillierte Inhalt vonKann COUNT() OVER (PARTITION BY ...) DISTINCT-Zählungen in SQL Server verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!