Maison >base de données >tutoriel mysql >Comment puis-je calculer efficacement un total cumulé de valeurs distinctes dans SQL Server à l'aide de partitions ?

Comment puis-je calculer efficacement un total cumulé de valeurs distinctes dans SQL Server à l'aide de partitions ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-03 22:26:40447parcourir

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

Atteindre un nombre distinct à l'aide de partitions et de Dense_Rank() OVER

Lorsque vous essayez de calculer un total cumulé de valeurs distinctes à l'aide de COUNT() OVER, l'inclusion du mot-clé DISTINCT entraîne souvent des erreurs. Bien que vous puissiez recourir à une approche traditionnelle comme les sous-requêtes corrélées, une solution plus efficace existe.

Dans SQL Server, le mot-clé DISTINCT n'est pas directement pris en charge dans les fonctions de partition. Cependant, en utilisant la fonction dense_rank(), vous pouvez obtenir efficacement un résultat similaire. La formule suivante renverra le nombre souhaité pour des valeurs distinctes :

dense_rank() over (partition by [Mth] order by [UserAccountKey]) 
+ dense_rank() over (partition by [Mth] order by [UserAccountKey] desc) 
- 1

Cette formule calcule le classement dense de chaque UserAccountKey par ordre croissant et décroissant au cours de chaque mois et en soustrait ensuite un. Le résultat est précisément le nombre de UserAccountKeys uniques au cours de ce mois, vous fournissant le total cumulé que vous recherchez.

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:
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