Duplicata de
Existe alguma diferença entre GROUP BY e DISTINTO
Já foi discutido aqui
Se ainda quiser ouvir aqui
Bem agrupar por e distinto tem seu próprio uso.
Distinto é usado para filtrar registros exclusivos dos registros que atendem aos critérios de consulta.
A cláusula Group by é usada para agrupar os dados sobre os quais as funções agregadas são acionadas e a saída é retornada com base nas colunas na cláusula group by. Ele tem suas próprias limitações, como todas as colunas que estão na consulta de seleção, além das funções de agregação, que devem fazer parte da cláusula Group by.
Portanto, mesmo que você possa ter os mesmos dados retornados por distinct e group by cláusula, é melhor usar distinct. Veja o exemplo abaixo
select col1,col2,col3,col4,col5,col6,col7,col8,col9 from table group by col1,col2,col3,col4,col5,col6,col7,col8,col9
pode ser escrito como
select distinct col1,col2,col3,col4,col5,col6,col7,col8,col9 from table
Isso facilita a sua vida quando você tem mais colunas na lista de seleção. Mas, ao mesmo tempo, se você precisar exibir sum(col10) junto com as colunas acima, terá que usar Group By. Nesse caso, o distinto não funcionará.
por exemplo
select col1,col2,col3,col4,col5,col6,col7,col8,col9,sum(col10) from table group by col1,col2,col3,col4,col5,col6,col7,col8,col9
Espero que isto ajude.