Database
 sql >> Base de Dados >  >> RDS >> Database

Como filtrar registros com a função agregada COUNT

Problema:


Você deseja encontrar grupos de linhas com um número específico de entradas em um grupo.

Exemplo:


Nosso banco de dados tem uma tabela chamada product com dados nas seguintes colunas:id , name e category .
id nome categoria
1 sofá móveis
2 luvas roupas
3 camiseta roupas
4 cadeira móveis
5 mesa móveis
6 assistir eletrônicos
7 poltrona móveis
8 saia roupas
9 receptor de rádio eletrônicos

Vamos encontrar a categoria de produtos com mais de duas entradas.

Solução:

SELECT category, COUNT(id)
FROM product
GROUP BY category
HAVING COUNT(id)>2;

Aqui estão os resultados:
categoria contagem
móveis 4
roupas 3

Discussão:


Para filtrar registros de acordo com o número determinado de linhas no grupo, use a cláusula HAVING. Ele filtra linhas usando uma função de agregação de condição como COUNT. Primeiro, em SELECT, use o nome de uma coluna ou colunas para agrupar linhas (esta é uma categoria em nosso exemplo), depois coloque a função agregada COUNT, que contabiliza o número de registros em cada grupo. Para contar o número de linhas, use a coluna id que armazena valores únicos (no nosso exemplo usamos COUNT(id) ). Em seguida, use a cláusula GROUP BY para agrupar registros de acordo com as colunas (o GROUP BY categoria acima). Após usar GROUP BY para filtrar registros com funções agregadas como COUNT, use a cláusula HAVING. É sempre usado após a cláusula GROUP BY. Em HAVING, usamos uma condição para comparar um valor com um retornado pela função de agregação. No exemplo, comparamos se COUNT(id) retorna um valor maior que dois. Se true, a categoria é retornada com a contagem de produtos.