Maison > base de données > tutoriel mysql > Comment calculer un total cumulé de valeurs distinctes dans les partitions SQL Server ?

Comment calculer un total cumulé de valeurs distinctes dans les partitions SQL Server ?

Patricia Arquette
Libérer: 2025-01-05 00:06:37
original
814 Les gens l'ont consulté

How to Calculate a Running Total of Distinct Values in SQL Server Partitions?

Fonction PARTITION COUNT() OVER avec DISTINCT

L'utilisation de la fonction PARTITION avec COUNT() pour calculer un total cumulé de valeurs distinctes peut être difficile dans SQL Server. Bien que le mot clé DISTINCT soit pris en charge dans les fonctions d'agrégation, il ne peut pas être utilisé dans les fonctions de partition. Cette limitation peut être frustrante, en particulier lorsque l'on tente de calculer des totaux cumulés de valeurs distinctes.

Une méthode traditionnelle pour calculer des décomptes distincts consiste à utiliser une sous-requête corrélée. Cependant, cette approche peut s'avérer inefficace et difficile à maintenir.

Heureusement, il existe une solution simple utilisant dense_rank() :

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 total cumulé de UserAccountKeys distincts dans chaque mois. Cela fonctionne en classant d'abord les valeurs par ordre croissant, puis en les classant par ordre décroissant et enfin en soustrayant une de la somme des deux rangs. Cette approche élimine efficacement les valeurs en double tout en fournissant un décompte des valeurs distinctes.

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