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