Heim >Datenbank >MySQL-Tutorial >Wie berechnet man eindeutige Zählungen innerhalb von Partitionen in SQL Server, ohne DISTINCT zu verwenden?

Wie berechnet man eindeutige Zählungen innerhalb von Partitionen in SQL Server, ohne DISTINCT zu verwenden?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-03 19:06:40764Durchsuche

How to Calculate Distinct Counts Within Partitions in SQL Server Without Using DISTINCT?

Berechnen eindeutiger Zählungen mithilfe von Partitionsfunktionen

In SQL Server können Sie mit der Funktion COUNT() OVER Daten innerhalb bestimmter Partitionen aggregieren. Die Verwendung des Schlüsselworts DISTINCT innerhalb der Partitionsfunktionen wird jedoch nicht unterstützt. Daher fragen sich Entwickler, wie sie eindeutige Zählungen innerhalb von Partitionen erhalten können.

Verwendung von DENSE_RANK

Eine einfache Lösung zur Berechnung eindeutiger Zählungen ist die Verwendung der Funktion DENSE_RANK. Die folgende Abfrage zeigt, wie:

DENSE_RANK() OVER (PARTITION BY [Mth] ORDER BY [UserAccountKey])
+ DENSE_RANK() OVER (PARTITION BY [Mth] ORDER BY [UserAccountKey] DESC)
- 1

Dieser Ausdruck berechnet die Anzahl unterschiedlicher UserAccountKeys innerhalb jedes Monats. Dies geschieht, indem zunächst die UserAccountKeys innerhalb jedes Monats in aufsteigender und absteigender Reihenfolge geordnet werden. Diese Rankings werden dann addiert und 1 subtrahiert, um die gewünschte Anzahl zu erhalten.

Beispiel

Berücksichtigen Sie die folgenden Daten:

| Mth | UserAccountKey |
|---|---|
| 1 | A |
| 1 | B |
| 1 | C |
| 2 | D |
| 2 | E |
| 2 | F |

Verwendet Wenn Sie den obigen Ausdruck verwenden, gibt die Abfrage Folgendes zurück Ergebnisse:

| Mth | NumUsers |
|---|---|
| 1 | 3 |
| 2 | 3 |

Fazit

Die Funktion DENSE_RANK bietet eine prägnante und effiziente Methode zum Berechnen unterschiedlicher Zählungen innerhalb von Partitionen in SQL Server, auch wenn dies beim Schlüsselwort DISTINCT nicht der Fall ist direkt in der PARTITION BY-Klausel unterstützt.

Das obige ist der detaillierte Inhalt vonWie berechnet man eindeutige Zählungen innerhalb von Partitionen in SQL Server, ohne DISTINCT zu verwenden?. 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