Como usar COUNT no SQL
Introdução
- COUNT( ) é uma função agregada em SQL.
- Esta função conta o número de registros em uma tabela se a condição não for especificada.
- Se a condição for especificada, a função de contagem retornará o número de registros que satisfazem a condição especificada.
Variações de CONTAR ( ) em SQL
- COUNT(*)
CONTAGEM (*) é usado para exibir o número de registros presentes em uma tabela.
Os resultados da função COUNT (*) conterão NULL, bem como entradas duplicadas também em consideração.
Sintaxe:
SELECT COUNT (*) FROM tablename;
Exemplo:
Primeiro vamos criar um banco de dados com o nome “employeedb”. Então nesse banco de dados vamos criar uma tabela “employee” e inserir registros na tabela. Consideraremos esta tabela e banco de dados para todos os exemplos subsequentes.
Encontraremos o número de registros presentes na tabela ‘employee’ usando a função COUNT().
mysql> USE employeedb; Database changed mysql> SELECT *FROM employee; +--------+----------+------------+ | Emp_ID | Emp_Name | Emp_Salary | +--------+----------+------------+ | 1 | Nikita | 30000 | | 2 | Riddhi | 25000 | | 3 | Nayan | 45000 | | 4 | Shruti | 15000 | | 5 | Anurati | 55000 | | 6 | NULL | NULL | | 7 | Anurati | 55000 | +--------+----------+------------+ 7 rows in set (0.00 sec)
mysql> SELECT COUNT(*) FROM employee;
Saída:
+----------+ | COUNT(*) | +----------+ | 7 | +----------+ 1 row in set (0.00 sec)
Existem 7 registros presentes na tabela de funcionários.
- COUNT (1)
COUNT (1) também é usado para exibir o número de registros presentes em uma tabela. Os resultados da função COUNT (1) conterão NULL, bem como entradas duplicadas também em consideração. A função COUNT (1) funciona da mesma forma que COUNT (*). Mesmo os resultados de COUNT (1) e COUNT (*) também são os mesmos.
Sintaxe:
SELECT COUNT (1) FROM tablename;
Exemplo 1: Vamos exibir o número de registros presentes na tabela de funcionários usando COUNT (1).
mysql> SELECT COUNT(1) FROM employee;
Saída:
+----------+ | COUNT(1) | +----------+ | 7 | +----------+ 1 row in set (0.00 sec)
Existem 7 registros presentes em uma tabela.
Exemplo 2:
Vamos ver o que acontece quando passamos 14 como parâmetro para a função COUNT().
mysql> SELECT COUNT(14) FROM employee;
Saída:
+-----------+ | COUNT(14) | +-----------+ | 7 | +-----------+ 1 row in set (0.00 sec)
Existem 7 registros presentes em uma tabela. Assim, 7 é exibido como saída mesmo que tenhamos passado 14 como parâmetro para a função COUNT(). Passar um inteiro para uma função COUNT() não significa contar esse número de linhas na tabela. Significa simplesmente que 14 serão atribuídos a cada linha presente em uma tabela e, em seguida, essas linhas serão somadas para fornecer um total e exibidas como uma saída.
Exemplo 3:
Vamos ver o que acontece quando passamos -14 como parâmetro para a função COUNT().
mysql> SELECT COUNT(-14) FROM employee;
Saída:
+------------+ | COUNT(-14) | +------------+ | 7 | +------------+ 1 row in set (0.07 sec)
Existem 7 registros presentes em uma tabela. Assim, 7 é exibido como uma saída mesmo que tenhamos passado -14 como parâmetro para a função COUNT(). Significa simplesmente que -14 será atribuído a cada linha presente em uma tabela e, em seguida, essas linhas serão somadas para fornecer um total e exibidas como uma saída.
- COUNT(ColumnName)
COUNT(ColumnName) é usado para localizar o número de registros que contêm valores para a coluna especificada. Ao usar a função COUNT() com columnname como parâmetro, os registros que contêm valores NULL para esse registro serão ignorados.
Sintaxe:
SELECT COUNT(ColumnName) FROM tablename;
Exemplo 1:
Vamos exibir o número de registros que existem para Emp_ID.
mysql> SELECT COUNT(Emp_ID) FROM employee;
Saída:
+---------------+ | COUNT(Emp_ID) | +---------------+ | 7 | +---------------+ 1 row in set (0.00 sec)
Existem 7 registros que contêm Emp_ID exclusivo. Portanto, 7 é exibido como uma saída.
Exemplo 2:
Vamos exibir o número de registros que existem para Emp_Name.
mysql> SELECT COUNT(Emp_Name) FROM employee;
Saída:
+-----------------+ | COUNT(Emp_Name) | +-----------------+ | 6 | +-----------------+ 1 row in set (0.00 sec)
Existem 7 registros na tabela de funcionários, entre os quais, um registro contém valores NULL para Emp_Name. Portanto, esse registro específico é ignorado e 6 é exibido como uma saída.
Exemplo 3:
Vamos exibir o número de registros que existem para Emp_Salary.
mysql> SELECT COUNT(Emp_Salary) FROM employee;
Saída:
+-------------------+ | COUNT(Emp_Salary) | +-------------------+ | 6 | +-------------------+ 1 row in set (0.00 sec)
Existem 7 registros na tabela de funcionários, entre os quais um registro contém valores NULL para Emp_Salary. Portanto, esse registro específico é ignorado e 6 é exibido como uma saída.
- COUNT(DISTINCT ColumnnName)
A função COUNT() com DISTINCT ColumnName como seu parâmetro é usada para exibir o número de registros que contém valores exclusivos para uma coluna específica. Registros que contenham valores duplicados e NULL não serão contados.
Sintaxe:
SELECT COUNT(DISTINCT ColumnName) FROM tablename;
Exemplo 1:
Exibiremos o número de registros que contêm valores exclusivos para Emp_ID.
mysql> SELECT COUNT( DISTINCT Emp_ID) FROM employee;
Saída:
+-------------------------+ | COUNT( DISTINCT Emp_ID) | +-------------------------+ | 7 | +-------------------------+ 1 row in set (0.05 sec)
Existem 7 registros que contêm valores exclusivos para Emp_ID.
Exemplo 2:
Exibiremos o número de registros que contêm valores exclusivos para Emp_Name.
mysql> SELECT COUNT( DISTINCT Emp_Name) FROM employee;
Saída:
+---------------------------+ | COUNT( DISTINCT Emp_Name) | +---------------------------+ | 5 | +---------------------------+ 1 row in set (0.00 sec)
Existem 5 registros que contêm valores exclusivos para Emp_Name. Valores NULL e duplicados em Emp_Name não serão considerados pela palavra-chave DISTINCT.
Exemplo 3:
Exibiremos o número de registros que contêm valores exclusivos para Emp_Salary.
mysql> SELECT COUNT( DISTINCT Emp_Salary) FROM employee;
Saída:
+-----------------------------+ | COUNT( DISTINCT Emp_Salary) | +-----------------------------+ | 5 | +-----------------------------+ 1 row in set (0.00 sec)
Existem 5 registros que contêm valores exclusivos para Emp_Salary. Valores NULL e duplicados em Emp_Salary não serão considerados pela palavra-chave DISTINCT.