Remover as duplicidades é um processo necessário para garantir a qualidade dos dados (Data Quality).
No dia-a-dia, quando preciso trazer os dados para analisar em uma plataforma analítica, tenho uma preocupação enorme com linhas duplicadas. Com vista, a não trazer informações inflacionadas ou inverdades.
Para remover as duplicidades, utilizo a função ROW_NUMBER().
Com a função ROW_NUMBER(), eu crio uma coluna que vai contar quantas vezes uma linha se repete e após essa contagem, eu armazeno o resultado em uma tabela temporária. Em seguida, Faço o SELECT na tabela temporária, trazendo somente as linhas onde contador=1.
Na função ROW_NUMBER() utilizamos as seguintes expressões:
ROW_NUMBER() : é a primeira declaração que informa que vamos usar a função e obrigatoriamente exige o uso do OVER() logo em seguida
OVER() : esta é uma expressão obrigatória que vem após a declaração do ROW_NUMBER(). Quando a usamos, é como se estivéssemos dizendo "Quero que o resultado seja contado sobre as regras desta expressão que escrevi dentro do parêntese".
PARTITION BY: Este comando indica quando a contagem deve ser reiniciada.
ORDER BY: Comando obrigatório que usamos para indicar por qual ordem a contagem deve se guiar.



No dia-a-dia, quando preciso trazer os dados para analisar em uma plataforma analítica, tenho uma preocupação enorme com linhas duplicadas. Com vista, a não trazer informações inflacionadas ou inverdades.
Para remover as duplicidades, utilizo a função ROW_NUMBER().
Com a função ROW_NUMBER(), eu crio uma coluna que vai contar quantas vezes uma linha se repete e após essa contagem, eu armazeno o resultado em uma tabela temporária. Em seguida, Faço o SELECT na tabela temporária, trazendo somente as linhas onde contador=1.
Na função ROW_NUMBER() utilizamos as seguintes expressões:
ROW_NUMBER() : é a primeira declaração que informa que vamos usar a função e obrigatoriamente exige o uso do OVER() logo em seguida
OVER() : esta é uma expressão obrigatória que vem após a declaração do ROW_NUMBER(). Quando a usamos, é como se estivéssemos dizendo "Quero que o resultado seja contado sobre as regras desta expressão que escrevi dentro do parêntese".
PARTITION BY: Este comando indica quando a contagem deve ser reiniciada.
ORDER BY: Comando obrigatório que usamos para indicar por qual ordem a contagem deve se guiar.
Eu tenho essa consulta: as partes marcadas em azul são linhas duplicadas
Eu vou usar a função ROW_NUMBER() para criar uma coluna que vai contar quantas vezes uma linha se repete.
Todas as colunas da minha consulta, vou colocar na expressão partition by.
SELECT
PRODUTO,QUANTIDADE,PRECO_UNIT,VALOR_TOTAL,DATA_AQUISICAO,IDPRODUTO,
ROW_NUMBER()
over(partition by PRODUTO,QUANTIDADE,PRECO_UNIT,VALOR_TOTAL,DATA_AQUISICAO,IDPRODUTO
order by IDPRODUTO )Coluna_Contador
FROM dbo.estoque ORDER BY produto
Eu vou selecionar somente as linhas onde Coluna_Contador=1 . Para fazer isso, preciso inserir esse select em uma tabela.
Como não quero criar uma tabela física, vou criar uma tabela temporária usando #
SELECT
PRODUTO,QUANTIDADE,PRECO_UNIT,VALOR_TOTAL,DATA_AQUISICAO,IDPRODUTO,
ROW_NUMBER()
over(partition by PRODUTO,QUANTIDADE,PRECO_UNIT,VALOR_TOTAL,DATA_AQUISICAO,IDPRODUTO
order by IDPRODUTO )Coluna_Contador
INTO #TABELA_TEMPORARIA -- Inserindo dados na tabela temporaria
FROM dbo.estoque ORDER BY produto
Fazer um SELECT na tabela temporaria para trazer os dados sem duplicidade
SELECT * FROM #TABELA_TEMPORARIA WHERE Coluna_Contador = 1
Comentários
Postar um comentário