Query para contar valores linhas repetidas em uma tabela SQL Server

Publicado por MapexMind em: novembro 11, 2013

Abaixo segue uma QUERY que da para ser utilizada para várias situações.

Veja alguns exemplos de uso:

A QUERY abaixo traz um limite máximo de dez resultados agrupados por uma coluna específica, que nesse caso a coluna se chama “ColunaX”.

WITH Registros as
(
SELECT ROW_NUMBER() OVER (Partition by ColunaX order by ColunaX) AS Cont,*
FROM TBL_TESTE
)
SELECT * FROM Registros WHERE Cont <= 10

Explicando a query.

A QUERY abaixo exclui valores repetido em uma tabela.

WITH Registros as
(
SELECT ROW_NUMBER() OVER (Partition by ColunaX order by ColunaX) AS Cont,*
FROM TBL_TESTE
)
--DELETE Registros WHERE Cont > 1

Explicando a query

 

 

Retornando apenas os valores máximos ou mínimos.

Pegando como exemplo a tabela conforme imagem abaixo.
tabelaArtistas

A técnica utiliza LEFT JOIN na mesma tabela com critérios de ser o mesmo artista e ter o número de execuções maior do que o registro da tabela original.

Ao final, a consulta retorna apenas os registros que não foram relacionados (valor NULL no LEFT JOIN), que são os
registros sem nenhum outro com número de execuções maior – ou seja, os que a coluna plays é na verdade MAX(plays) daquele artista.

SELECT m1.id_artista, m1.nome, m1.plays
FROM musica m1
LEFT JOIN musica m2
    ON m1.id_artista = m2.id_artista
   AND m1.plays < m2.plays
WHERE m2.id IS NULL 

Essa fica sendo, então, a forma mais eficiente de recuperar o registro com maior valor em determinada coluna, já que não é necessário nenhum tipo de subquery e nem mesmo GORUP BY. E se quiser o menor valor, basta trocar o sinal.

Com informações de Imasters