Maison >base de données >tutoriel mysql >Comment calculer des comptes distincts dans les partitions dans SQL Server sans utiliser 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
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 |
Utilisation l'expression ci-dessus, la requête renverra ce qui suit résultats :
| Mth | NumUsers | |---|---| | 1 | 3 | | 2 | 3 |
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!