Curso
O que é o COUNT() função?
A função COUNT() retorna o número de linhas que correspondem a um critério.
COUNT() syntax
A sintaxe básica do site COUNT() é a seguinte.
SELECT COUNT(column_name)
FROM table_name;
As variações da sintaxe atingem objetivos diferentes.
- A sintaxe
COUNT(*)nos permite contar o número de linhas em uma tabela - A sintaxe
COUNT(DISTINCT column)nos permite contar o número de valores distintos em uma coluna - A sintaxe
COUNT(CASE WHEN condition THEN column END)nos permite contar o número de valores que atendem às condições.
COUNT()usado com GROUP BY, é útil para contar o número de linhas que pertencem a cada grupo.
COUNT()usado com HAVING, é útil para filtrar grupos de acordo com o número de linhas que eles têm.
Vamos ilustrá-los com os exemplos abaixo.
COUNT() exemplos
Exemplo 1: Contagem do número de linhas com COUNT(*)
A tabela chamada products contém todos os produtos que uma empresa vende. A cláusula COUNT(*) nos permite calcular o número de linhas na tabela.
SELECT
COUNT(*) AS number_of_rows
FROM products
|
|
|
321 |
Exemplo 2: Contagem de valores exclusivos com COUNT(DISTINCT …)
A sintaxe COUNT(DISTINCT column) nos permite contar o número de valores exclusivos em uma coluna.
Por exemplo, cada produto tem uma marca associada na tabela products. Podemos contar o número de produtos e marcas exclusivos na tabela.
SELECT
COUNT(DISTINCT product_id) AS unique_product_count,
COUNT(DISTINCT brand_id) AS unique_brand_count
FROM products
|
|
|
|
321 |
9 |
Exemplo 3: Contar as linhas que correspondem a uma condição usando COUNT() com CASE WHEN
A sintaxe COUNT(CASE WHEN condition THEN column END) nos permite calcular o número de linhas que correspondem a uma condição.
Por exemplo, na tabela de produtos, cada produto tem um list_price. Podemos calcular quantos produtos são "expensive" (com um preço de lista superior a US$ 500) ou não.
SELECT
COUNT(CASE WHEN list_price >= 500 THEN product_id END) AS expensive_product_count,
COUNT(CASE WHEN list_price < 500 THEN product_id END) AS cheap_product_count
FROM products
|
|
|
|
213 |
108 |
Exemplo 4: Contar linhas em grupos usando COUNT() com GROUP BY
COUNT() pode ser usado com GROUP BY para encontrar o número de linhas em cada grupo.
Por exemplo, a tabela de produtos contém modelos de bicicletas de 2016 a 2019. Para encontrar a distribuição da bicicleta, podemos usar COUNT(product_id) e GROUP BY model_year para contar o número de produtos de cada ano.
SELECT
model_year,
COUNT(product_id) AS product_count
FROM products
GROUP BY model_year
|
|
|
|
2016 |
26 |
|
2017 |
85 |
|
2018 |
204 |
|
2019 |
6 |
Exemplo 5: Filtrar por grupos usando COUNT() com GROUP BY e HAVING
No exemplo 4, vemos que COUNT() pode ser usado com GROUP BY. Podemos usar a instrução HAVING para filtrar os grupos usando o número de linhas nesse grupo.
Por exemplo, para encontrar o número de anos que têm menos de 50 produtos, podemos usar a seguinte sintaxe.
SELECT
model_year
FROM products
GROUP BY model_year
HAVING COUNT(product_id) < 50
|
|
|
2016 |
|
2019 |
Requisitos técnicos
COUNT() é uma função que está disponível em todas as versões do SQL moderno.
