Maison > base de données > tutoriel mysql > Comment calculer des comptes distincts dans les partitions dans SQL Server sans utiliser DISTINCT ?

Comment calculer des comptes distincts dans les partitions dans SQL Server sans utiliser DISTINCT ?

Patricia Arquette
Libérer: 2025-01-03 19:06:40
original
805 Les gens l'ont consulté

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

Calcul de comptes distincts à l'aide de fonctions de partition

Dans SQL Server, la fonction COUNT() OVER vous permet d'agréger des données dans des partitions spécifiées. Toutefois, l'utilisation du mot-clé DISTINCT dans les fonctions de partition n'est pas prise en charge. Cela laisse les développeurs se demander comment obtenir des décomptes distincts au sein des partitions.

Utiliser DENSE_RANK

Une solution simple pour calculer des décomptes distincts consiste à utiliser la fonction DENSE_RANK. La requête suivante montre comment :

DENSE_RANK() OVER (PARTITION BY [Mth] ORDER BY [UserAccountKey])
+ DENSE_RANK() OVER (PARTITION BY [Mth] ORDER BY [UserAccountKey] DESC)
- 1
Copier après la connexion

Cette expression calcule le nombre de UserAccountKeys distincts au cours de chaque mois. Pour ce faire, il classe d'abord les UserAccountKeys par ordre croissant et décroissant au cours de chaque mois. Ces classements sont ensuite additionnés et 1 est soustrait pour donner le décompte souhaité.

Exemple

Considérez les données suivantes :

| Mth | UserAccountKey |
|---|---|
| 1 | A |
| 1 | B |
| 1 | C |
| 2 | D |
| 2 | E |
| 2 | F |
Copier après la connexion

Utilisation l'expression ci-dessus, la requête renverra ce qui suit résultats :

| Mth | NumUsers |
|---|---|
| 1 | 3 |
| 2 | 3 |
Copier après la connexion

Conclusion

La fonction DENSE_RANK fournit une méthode concise et efficace pour calculer des décomptes distincts au sein des partitions dans SQL Server, même si le mot clé DISTINCT n'est pas directement pris en charge dans la clause PARTITION BY.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal