12th Dec 2022 7 minutos de leitura Qual é o papel do DISTINCT em SQL? sql aprender sql distinct Índice SQL DISTINCT em uma única coluna SQL DISTINCT Remove Valores Duplicados Preste atenção às colunas utilizadas A inclusão dos valores NULL SQL DISTINCT com uma Subconsulta SQL DISTINCT com Múltiplas Colunas SQL DISTINCT com Funções Agregadas DISTINTO com Funções Agregadas e GROUP BY Aprender sobre o DISTINCT em SQL é apenas o começo! A palavra-chave DISTINCT em SQL desempenha um papel importante na remoção de valores duplicados de seus resultados. Este artigo fornece exemplos que mostram exatamente como o DISTINCT funciona. Por padrão, as consultas SQL mostram todas as linhas retornadas, incluindo as linhas duplicadas, no conjunto de resultados. A palavra-chave DISTINCT na cláusula SELECT é usada para eliminar linhas duplicadas e exibir uma lista única de valores. Em outras palavras, a palavra-chave DISTINCT recupera valores únicos a partir de uma tabela. A sintaxe básica da palavra-chave DISTINCT em SQL é: SELECT DISTINCT column_1, column_2, …, column_n FROM table_name (Se você achar a sintaxe acima confusa, considere LearnSQL.com.br's SQL para Iniciantes curso. Ela cobre os fundamentos da SQL, incluindo a palavra-chave DISTINCT ). Note que a palavra-chave DISTINCT deve ser colocada antes das colunas que você especificar. Você pode especificar mais de uma coluna para ser DISTINCT, o que fará com que SQL retorne somente combinações únicas dos valores dessas colunas. Se você selecionar mais de uma coluna, todas as colunas serão combinadas e somente a singularidade da linha será considerada. SQL DISTINCT procura por uma linha distinta, ao invés de uma coluna distinta. Vamos ver a palavra-chave DISTINCT em ação com um exemplo prático. Primeiro, porém, devemos nos familiarizar com os dados com os quais estaremos trabalhando. Imagine que temos uma tabela chamada employee_infoque contém detalhes sobre os funcionários de nossa empresa: employee_idfirst_namelast_namedepartmentage 127374JoshuaReesSales26 293421KarenBowerSales45 244813LukePayneNULL42 463281MaxPaigeHuman Resources53 374241JuliaGloverHuman Resources29 568421RoseHarrisHuman Resources43 NULLNULLNULLNULLNULL 839211OliviaBakerSales32 293493KarenBowerSales45 463281MaxPaigeHuman Resources53 244813LukePayneNULL42 933821BernadetteParsonsSalesNULL SQL DISTINCT em uma única coluna Vamos ver o efeito da palavra-chave DISTINCT quando tentamos SELECT a coluna employee_id. Primeiro, aqui está a consulta antes de aplicar a palavra-chave DISTINCT: SELECT employee_id FROM employee_info Isto resulta no seguinte: employee_id 127374 293421 244813 463281 374241 568421 NULL 839211 293493 463281 244813 933821 A execução desta consulta retorna a coluna inteira employee_id de nossa tabela. Esta coluna corresponde à employee_info tabela exatamente. Em uma análise mais detalhada, podemos ver alguns valores duplicados - 244813 e 463281 cada um aparece duas vezes. Vamos adicionar a palavra-chave DISTINCT para endereçar estes valores duplicados. Lembre-se, adicionamos a palavra-chave DISTINCT antes de especificarmos as colunas: SELECT DISTINCT employee_id FROM employee_info employee_id 127374 293421 244813 463281 374241 568421 NULL 839211 293493 933821 Nosso conjunto de dados resultante parece mais curto; há várias coisas que podemos aprender com esta resposta. SQL DISTINCT Remove Valores Duplicados Se contrastarmos a tabela original com nosso resultado, podemos ver que as duplicatas foram filtradas com sucesso. O uso da palavra-chave DISTINCT é apenas um método para remover valores duplicados, como mostra este artigo sobre as diferentes maneiras de remover duplicatas em SQL. O employee_info A tabela continha duas ocorrências dos seguintes valores: employee_id 244813 463281 Entretanto, nosso resultado agora mostra estes valores apenas uma vez. A palavra-chave DISTINCT teve o efeito desejado. Preste atenção às colunas utilizadas Quando você vê pela primeira vez a employee_info tabela, parece que estas filas são duplicatas. employee_idfirst_namelast_namedepartmentage 293421KarenBowerSales45 293493KarenBowerSales45 Em uma inspeção mais detalhada, você pode ver que o valor de employee_id é diferente. Como aplicamos a palavra-chave DISTINCT a esta coluna employee_id, ambos os valores são devolvidos. A inclusão dos valores NULL Você provavelmente notou a presença de valores NULL no conjunto de dados devolvidos. Em SQL, NULL é considerado um valor único, o que significa que será retornado ao usar a palavra-chave DISTINCT. Se você gostaria de remover os valores NULL do resultado, você poderia escrever a seguinte consulta: SELECT DISTINCT * FROM employee_info WHERE employee_id IS NOT NULL SQL DISTINCT com uma Subconsulta Você também pode usar a palavra-chave DISTINCT como parte de uma subconsulta. Entretanto, vale a pena mencionar que uma subconsulta IN, ANY, ou EXISTS avalia a verdade se há pelo menos uma linha que faz com que a subconsulta avalie a verdade. Isto torna desnecessário o uso de uma DISTINCT com uma subconsulta IN, ANY, ou EXISTS. SQL DISTINCT com Múltiplas Colunas As colunas que você especifica como DISTINCT desempenham um papel fundamental no que os dados são devolvidos. Veja a consulta a seguir: SELECT DISTINCT employee_id, first_name, last_name FROM employee_info Estamos à procura de combinações únicas destas três colunas. A execução desta consulta produz o seguinte resultado: employee_idfirst_namelast_name 127374JoshuaRees 293421KarenBower 244813LukePayne 463281MaxPaige 374241JuliaGlover 568421RoseHarris NULLNULLNULL 839211OliviaBaker 293493KarenBower 933821BernadetteParsons Ao digitalizar este conjunto de resultados, você pode estar esperando ver nomes completamente únicos junto com seus employee_id. Por exemplo, olhe para estes dados: employee_idfirst_namelast_name 293421KarenBower 293493KarenBower O valor employee_id é único para ambas as linhas, o que significa que estas linhas também são consideradas únicas. Se alterarmos a consulta para o seguinte: SELECT DISTINCT first_name, last_name FROM employee_info ... employee_id não é mais considerado; agora estamos procurando por combinações únicas de nomes. Assim, apenas uma linha para "Karen Bower" é mostrada: first_namelast_name JoshuaRees KarenBower LukePayne MaxPaige JuliaGlover RoseHarris NULLNULL OliviaBaker BernadetteParsons Se você estiver lutando para alcançar os resultados desejados ao usar a palavra-chave DISTINCT, preste atenção especial às colunas que você incluiu. Se este exemplo específico ainda estiver lhe causando confusão, confira este artigo sobre como contar valores distintos em SQL. SQL DISTINCT com Funções Agregadas A palavra-chave DISTINCT pode ser usada ao lado de funções agregadas. As funções agregadas mais comuns são: MIN() - Retorna o menor valor (mínimo). MAX() - Devolve o maior (máximo) valor. SUM() - Retorna a soma dos valores especificados. AVG() - Retorna a média dos valores especificados (por exemplo, em uma coluna). COUNT() - Devolve o número de itens (por exemplo, em uma coluna). Quando DISTINCT é usado com SUM(), AVG(), e COUNT(), elimina valores duplicados antes que a soma, média ou contagem seja calculada. Enquanto você pode usar a palavra-chave DISTINCT com MIN() e MAX(), é inútil fazê-lo; isso não terá impacto nos resultados. Vamos aplicar estas informações ao nosso exemplo anterior envolvendo a employee_info mesa. Se quiséssemos contar o número de funcionários que trabalham atualmente em nossa empresa enquanto tomamos o cuidado de remover as entradas duplicadas, escreveríamos a seguinte consulta: SELECT COUNT(DISTINCT employee_id) FROM employee_info O resultado desta consulta é: COUNT(DISTINCT employee_id) 9 Este seria o exemplo mais simples de como a palavra-chave DISTINCT pode ser usada em conjunto com funções agregadas. A execução desta consulta sem a palavra-chave DISTINCT incluiria valores duplicados na contagem: SELECT COUNT(employee_id) FROM employee_info O resultado desta consulta é: O resultado desta consulta é COUNT(employee_id) 11 Se você acha que sua tabela pode conter registros duplicados, usar DISTINCT é uma excelente maneira de garantir que seus relatórios sejam precisos e não sejam afetados por valores duplicados. Se este caso de uso não estiver claro para você, recomendo a leitura deste artigo sobre a contagem de valores distintos em SQL. Há muitos outros casos de uso para COUNT(); para exemplos úteis adicionais, verifique este artigo explicando as diferenças entre as aplicações comuns da função COUNT(). DISTINTO com Funções Agregadas e GROUP BY Vamos usar uma função agregada com a palavra-chave DISTINCT para nos ajudar a resolver um problema comum. Queremos encontrar em nossa tabela o número de entradas employee_id duplicadas potenciais para cada par de nomes. Queremos isolar o caso em que o nome do funcionário é exatamente o mesmo, mas com um employee_id diferente. Aqui está a consulta: SELECT first_name, last_name, COUNT(DISTINCT employee_id) FROM employee_info GROUP BY first_name, last_name E o resultado: employee_idfirst_nameCOUNT (DISTINCT employee_id) NULLNULL0 BernadetteParsons1 JoshuaRees1 JuliaGlover1 KarenBower2 LukePayne1 MaxPaige1 OliviaBaker1 RoseHarris1 Podemos ver a partir destes resultados que temos duas entradas diferentes para o employee_id de Karen Bower. Esta é uma excelente informação para se ter. Se não há duas pessoas diferentes chamadas Karen Bower trabalhando em nossa empresa, sabemos que esta informação foi inserida por engano e pode ser considerada uma duplicata a ser removida. Aprender sobre o DISTINCT em SQL é apenas o começo! A capacidade de isolar e excluir dados duplicados dos resultados de sua consulta é uma habilidade importante para todos os usuários de SQL. A palavra-chave DISTINCT desempenha um papel importante em sua capacidade de fazer isso de forma eficaz. Se você gostou deste artigo e quer continuar aprendendo sobre SQL, considere nosso Fundamentos de SQL learning track. Ele lhe ensinará instruções SQL básicas como WHERE, GROUP BY, ORDER BY, e HAVING. Você também aprenderá a JOIN tabelas e a adicionar, modificar ou remover dados de um banco de dados. Tags: sql aprender sql distinct