Encontré esta pregunta en busca de una solución a mi problema de contar valores distintos. Al buscar una respuesta, encontré esta publicación . Ver último comentario. Lo probé y usé el SQL. Funciona muy bien para mí y pensé que proporcionaría otra solución aquí.
En resumen, usando DENSE_RANK() , con PARTITION BY las columnas agrupadas y ORDER BY ambos ASC y DESC en las columnas a contar:
DENSE_RANK() OVER (PARTITION BY drugClass ORDER BY drugName ASC) +
DENSE_RANK() OVER (PARTITION BY drugClass ORDER BY drugName DESC) - 1 AS drugCountsInFamilies
Lo uso como plantilla para mí.
DENSE_RANK() OVER (PARTITION BY PartitionByFields ORDER BY OrderByFields ASC ) +
DENSE_RANK() OVER (PARTITION BY PartitionByFields ORDER BY OrderByFields DESC) - 1 AS DistinctCount
¡Espero que esto ayude!