Categories
Banco de dados Tutoriais

Use DISTINCT para eliminar redundâncias no MySQL

Como criar relatórios no MySQL com o uso de DISTINCT e COUNT(DISTINCT). Entenda o funcionamento destas funções através de exemplos práticos.

O DISTINCT pode ser usado para determinar quantos valores redundantes há numa lista ou, pelo contrário, quantos valores distintos há presentes.
Use a cláusula DISTINCT para selecionar os valores únicos ou agregue funções com COUNT(DISTINCT) para contá-los.
O DISTINCROW, caso você já tenha ouvido falar, é sinônimo do DISTINCT — use o que te deixa mais confortável, portanto.
Um relatório que não use funções agregadas é usado para determinar quais valores ou quais registros estão contidos no banco de dados, pela eliminação das redundâncias.
O DISTINCT é útil para reduzir o resultado de uma declaração à sua essência. Pode ser combinado com ORDER BY para ordenar a lista.
Por exemplo, se quiser saber os nomes dos clientes listados na tabela de cli_tabela, use a seguinte consulta:

SELECT DISTINCT cli_nome FROM cli_tabela ORDER BY cli_nome;
_
+----------+
| cli_nome |
+----------+
| Ian      |
| Henry    |
| Justin   |
+----------+

Uma declaração sem o uso da cláusula DISTINCT e ORDER BY produz uma relação com os mesmos nomes, só que não é tão fácil de entender.
Veja como ficaria:

SELECT cli_nome FROM cli_tabela;
_

O resultado contém informação demais e fora de ordem:

+----------+
| cli_nome |
+----------+
| Ian      |
| Justin   |
| Henry    |
| Henry    |
| Ian      |
| Henry    |
| Justin   |
| Henry    |
| Ian      |
| Henry    |
+----------+

Mesmo a relação contendo 10 registros de nomes de clientes, temos na verdade apenas 3 nomes de clientes nesta relação.
Se você quiser obter apenas uma contagem dos nomes de clientes registrados na tabela, use COUNT(DISTINCT). Veja um exemplo:

SELECT COUNT(DISTINCT cli_nome) FROM cli_tabela;

como já sabemos, o resultado é…

+--------------------------+
| COUNT(DISTINCT cli_nome) |
+--------------------------+
|                        3 |
+--------------------------+

A cláusula COUNT(DISTINCT) ignora valores NULL.
Se, por acaso, você tiver interesse em incluir na conta estes tipos de valores, experimente o seguinte artifício:

Substitua, na query acima, a variável valor pelo campo desejado.
As consultas com DISTINCT, comumente são úteis quando combinadas com funções agregadas — podendo produzir uma caracterização mais completa de seus resultados.
Por exemplo, o uso da função COUNT(*) em uma tabela de clientes indica a quantidade de clientes presente.
Ao aplicar DISTINCT aos campos ‘estado’, por exemplo, revela-se em quais estados você tem clientes.
Se usar a combinação COUNT(DISTINCT), então, é possível saber por quantos estados se estende sua clientela.
Ao ser usado com múltiplas colunas, o DISTINCT mostra as diferentes combinações de valores e COUNT(DISTINCT) conta o número de combinações.

By Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como "Rick and Morty" e "BoJack Horseman".
Me siga no Twitter e vamos trocar ideias!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.