Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Fonctions de fenêtre pour compter des enregistrements distincts

Je suis tombé sur cette question à la recherche d'une solution à mon problème de comptage de valeurs distinctes. En cherchant une réponse, je suis tombé sur ce message . Voir dernier commentaire. Je l'ai testé et utilisé le SQL. Cela fonctionne très bien pour moi et j'ai pensé que je fournirais une autre solution ici.

En résumé, en utilisant DENSE_RANK() , avec PARTITION BY les colonnes groupées, et ORDER BY les deux ASC et DESC sur les colonnes à compter :

DENSE_RANK() OVER (PARTITION BY drugClass ORDER BY drugName ASC) +
DENSE_RANK() OVER (PARTITION BY drugClass ORDER BY drugName DESC) - 1 AS drugCountsInFamilies

Je l'utilise comme modèle pour moi-même.

DENSE_RANK() OVER (PARTITION BY PartitionByFields ORDER BY OrderByFields ASC ) +
DENSE_RANK() OVER (PARTITION BY PartitionByFields ORDER BY OrderByFields DESC) - 1 AS DistinctCount

J'espère que cela vous aidera !