Resumo : neste tutorial, você aprenderá como usar a COUNT
DISTINCT
função MySQL para contar o número de valores únicos em uma coluna específica de uma tabela.
Introdução à função MySQL COUNT DISTINCT
O COUNT
DISTINCT
permite contar o número de valores exclusivos em uma coluna específica de uma tabela.
Aqui está a sintaxe básica para usar a COUNT
DISTINCT
função:
SELECT COUNT(DISTINCT column_name)
FROM table_name;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe:
COUNT
DISTINCT
: A função para contar valores únicos.column_name
: o nome da coluna para a qual você deseja contar valores distintos.table_name
: o nome da tabela que contém o arquivocolumn_name
.
Na prática, você usa COUNT DISTINCT
quando deseja descobrir quantos valores únicos estão presentes em uma coluna.
Exemplos de MySQL COUNT DISTINCT
Vejamos alguns exemplos de uso da COUNT DISTINCT
função. Usaremos a employees
tabela do banco de dados de exemplo para a demonstração:
A consulta a seguir recupera nome, sobrenome e cargo da employees
tabela:
SELECT firstName, lastName, jobTitle
FROM employees;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+-----------+-----------+----------------------+
| firstName | lastName | jobTitle |
+-----------+-----------+----------------------+
| Diane | Murphy | President |
| Mary | Patterson | VP Sales |
| Jeff | Firrelli | VP Marketing |
| William | Patterson | Sales Manager (APAC) |
| Gerard | Bondur | Sale Manager (EMEA) |
| Anthony | Bow | Sales Manager (NA) |
| Leslie | Jennings | Sales Rep |
| Leslie | Thompson | Sales Rep |
| Julie | Firrelli | Sales Rep |
| Steve | Patterson | Sales Rep |
| Foon Yue | Tseng | Sales Rep |
| George | Vanauf | Sales Rep |
| Loui | Bondur | Sales Rep |
| Gerard | Hernandez | Sales Rep |
| Pamela | Castillo | Sales Rep |
| Larry | Bott | Sales Rep |
| Barry | Jones | Sales Rep |
| Andy | Fixter | Sales Rep |
| Peter | Marsh | Sales Rep |
| Tom | King | Sales Rep |
| Mami | Nishi | Sales Rep |
| Yoshimi | Kato | Sales Rep |
| Martin | Gerard | Sales Rep |
+-----------+-----------+----------------------+
23 rows in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A saída indica que a employees
tabela possui 23 linhas.
1) Usando COUNT DISTINCT para obter o número de cargos exclusivos
O exemplo a seguir usa a COUNT
DISTINCT
função para obter o número exclusivo de cargos da jobTitle
coluna da employees
tabela:
SELECT
COUNT(DISTINCT jobTitle)
from
employees;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta consulta:
COUNT( DISTINCT jobTitle)
: conta o número de valores distintos najobTitle
coluna.FROM employees
: especifica a tabela da qual os dados serão recuperados.
Ao executar a consulta, o MySQL retornará a seguinte saída:
+--------------------------+
| count(distinct jobTitle) |
+--------------------------+
| 7 |
+--------------------------+
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Você pode usar um alias de coluna para atribuir um nome mais significativo à coluna de saída da seguinte maneira:
SELECT
COUNT(DISTINCT jobTitle) uniqueJobTitleCount
from
employees;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+---------------------+
| uniqueJobTitleCount |
+---------------------+
| 7 |
+---------------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
2) Usando COUNT DISTINCT para obter o número de nomes exclusivos
O exemplo a seguir usa COUNT
DISTINCT
para obter o número de nomes exclusivos de funcionários:
SELECT
COUNT(DISTINCT firstName) uniqueFirstNameCount
from
employees;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+----------------------+
| uniqueFirstNameCount |
+----------------------+
| 21 |
+----------------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
CONTAGEM DISTINTA e NULA
No MySQL, a COUNT DISTINCT
função não conta valores NULL. Ele conta apenas valores exclusivos e não nulos na coluna especificada. Em outras palavras, se uma coluna tiver valores nulos, a COUNT DISTINCT
função irá ignorar os valores NULL da contagem.
Vamos dar uma olhada no exemplo a seguir.
Primeiro, crie uma nova tabela contacts
que tenha duas colunas id
e name
:
CREATE TABLE contacts(
id INT AUTO_INCREMENT,
name VARCHAR(50),
PRIMARY KEY(id)
);
Segundo, insira quatro linhas na contacts
tabela:
INSERT INTO contacts(name)
VALUES ("John"), ("Jane"),(NULL), ("Jane");
Linguagem de código: PHP ( php )
Terceiro, selecione os dados da contacts
tabela:
SELECT * FROM contacts;
Saída:
+----+------+
| id | name |
+----+------+
| 1 | John |
| 2 | Jane |
| 3 | NULL |
| 4 | Jane |
+----+------+
4 rows in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
Finalmente, conte o número de nomes exclusivos na name
coluna da contacts
tabela:
SELECT COUNT(DISTINCT name)
FROM contacts;
Saída:
+----------------------+
| COUNT(DISTINCT name) |
+----------------------+
| 2 |
+----------------------+
1 row in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
Neste exemplo, a COUNT DISTINCT
função ignora o valor NULL e conta apenas valores exclusivos não nulos.
Resumo
- Use
COUNT
DISTINCT
a função MySQL para contar o número de valores exclusivos em uma coluna de uma tabela. - A
COUNT DISTINCT
função ignora valores NULL da contagem.