Comparativo entre DISTINCT e GROUP BY
Quando estamos trabalhando com bancos de dados em SQL, é comum utilizarmos as cláusulas DISTINCT ou GROUP BY para filtrar nossas consulta conforme o desejado. Essas duas cláusulas possuem diferenças sutis que até antes deste artigo não estava tão claro para mim. Eu só utilizava, mas não sabia explicar o verdadeiro motivo de utilizar uma ou outra.
Comparativo entre DISTINCT e GROUP BY
Distinct
A cláusula DISTINCT
é utilizada para retornar valores únicos de uma coluna em uma consulta, ou seja, elimina as duplicatas dos resultados da consulta, exibindo apenas uma ocorrência de cada valor exclusivo. Por exemplo, se uma coluna "nome" possuir várias ocorrências do mesmo nome, a cláusula DISTINCT retornará apenas uma ocorrência desse nome.
O uso do DISTINCT é recomendado quando você quer obter apenas os valores únicos de uma coluna em uma consulta e não precisar de agregação de dados ou agrupamento de linhas.
Group By
A cláusula GROUP BY é utilizada para agrupar as linhas de uma consulta com base em uma ou mais colunas. Ela permite a agregação de dados e a aplicação de funções de agregação, como COUNT, SUM, AVG, MAX, MIN, entre outras, em cada grupo de linhas.
Por exemplo, você pode utilizar o GROUP BY para agrupar dados de vendas por região, por ano ou por categoria de produto e, em seguida, aplicar funções de agregação para obter informações resumidas para cada grupo.
O uso do GROUP BY é recomendado quando você precisa agrupar linhas em uma consulta com base em uma ou mais colunas e aplicar funções de agregação nos grupos formados.
Principais Diferenças
A principal diferença entre DISTINCT e GROUP BY é que o DISTINCT opera em todas as colunas selecionadas em uma consulta, removendo duplicatas de todas as colunas, enquanto o GROUP BY opera apenas nas colunas especificadas na cláusula GROUP BY e permite a aplicação de funções de agregação nos grupos formados.
Exemplo de uso
Suponha que você tenha uma tabela de vendas com informações sobre vendas em várias regiões e datas diferentes. Você pode utilizar a cláusula GROUP BY para agrupar as vendas por região e data e, em seguida, aplicar funções de agregação, como SUM ou AVG, para determinar as vendas totais ou médias para cada região e data.
Se você só quiser saber as regiões distintas onde ocorreram vendas, você pode utilizar a cláusula DISTINCT em vez da cláusula GROUP BY. Isso retornará apenas uma ocorrência de cada região na tabela de vendas, independentemente do número de vendas que ocorreram em cada região.
Conclusão
Por fim, muitas das vezes utilizamos "ferramentas" e não sabemos explicar o motivo do por que uma melhor do a outra. espero ter mostrado de forma simples as principais diferença entre o uso do DISTINCT e do GROUP BY.
Referências
SQL DISTINCT: listando valores distintos em tabelas! -
https://blog.betrybe.com/sql-distinct/#:~:text=Enquanto%20o%20comando%20DISTINCT%20%C3%A9,acordo%20com%20um%20crit%C3%A9rio%20espec%C3%ADfico.
Qual é mais rápido: DISTINCT ou GROUP BY? -
https://portosql.wordpress.com/2018/09/02/distinct-x-group-by/
Qual é a diferença entre DISTINCT e GROUP BY? -
https://codigosimples.net/2014/05/18/diferencas-entre-distinct-e-group-sql-server/
DISTINCT e GROUP BY, qual a diferença entre ambas as declarações?