Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Funções de janela para contar registros distintos


Me deparei com essa pergunta em busca de uma solução para o meu problema de contar valores distintos. Ao procurar uma resposta, encontrei este post . Veja o último comentário. Eu testei e usei o SQL. Funciona muito bem para mim e imaginei que forneceria outra solução aqui.

Em resumo, usando DENSE_RANK() , com PARTITION BY as colunas agrupadas e ORDER BY ambos ASC e DESC nas colunas para contar:
DENSE_RANK() OVER (PARTITION BY drugClass ORDER BY drugName ASC) +
DENSE_RANK() OVER (PARTITION BY drugClass ORDER BY drugName DESC) - 1 AS drugCountsInFamilies

Eu uso isso como um modelo para mim.
DENSE_RANK() OVER (PARTITION BY PartitionByFields ORDER BY OrderByFields ASC ) +
DENSE_RANK() OVER (PARTITION BY PartitionByFields ORDER BY OrderByFields DESC) - 1 AS DistinctCount

Eu espero que isso ajude!