DISTINCT e GROUP BY, qual a diferença entre ambas as declarações?

DISTINCT e GROUP BY são usados para agrupar e filtrar dados em uma consulta SQL, mas eles têm objetivos diferentes.

A cláusula DISTINCT é usada para eliminar duplicatas nas colunas selecionadas em uma consulta. Ela retorna apenas valores únicos. Por exemplo, se você tiver uma tabela de clientes e quiser obter uma lista de todas as cidades distintas em que esses clientes estão localizados, você pode usar o DISTINCT da seguinte forma:

SELECT DISTINCT cidade FROM clientes;

Isso retornará uma lista de todas as cidades únicas presentes na tabela de clientes.

Por outro lado, a cláusula GROUP BY é usada para agrupar linhas de uma tabela com base nos valores de uma ou mais colunas. Em seguida, é possível aplicar funções de agregação, como COUNT, SUM, AVG, entre outras. Por exemplo, se você tiver uma tabela de vendas e quiser saber a quantidade total de vendas por cada cliente, você pode usar o GROUP BY da seguinte forma:

SELECT cliente, SUM(valor) FROM vendas GROUP BY cliente;

Isso retornará o nome do cliente e a soma total de suas vendas.

Em resumo, o DISTINCT é usado para eliminar duplicatas nas colunas selecionadas, enquanto o GROUP BY é usado para agrupar linhas e aplicar funções de agregação com base nos valores de uma ou mais colunas.