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 ?
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!