sql >> Base de Datos >  >> RDS >> Database

Cómo filtrar registros con la función de agregado COUNT

Problema:

Quiere encontrar grupos de filas con un número específico de entradas en un grupo.

Ejemplo:

Nuestra base de datos tiene una tabla llamada product con datos en las siguientes columnas:id , name y category .

id nombre categoría
1 sofá muebles
2 guantes ropa
3 Camiseta ropa
4 silla muebles
5 escritorio muebles
6 ver electrónica
7 sillón muebles
8 falda ropa
9 receptor de radio electrónica

Busquemos la categoría de productos con más de dos entradas.

Solución:

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

Estos son los resultados:

categoría contar
mobiliario 4
ropa 3

Discusión:

Para filtrar registros según el número dado de filas en el grupo, use la cláusula HAVING. Filtra filas usando una función agregada de condición como COUNT. Primero, en SELECCIONAR, use el nombre de una columna o columnas para agrupar filas (esta es una categoría en nuestro ejemplo), luego coloque la función agregada CONTAR, que cuenta la cantidad de registros en cada grupo. Para contar el número de filas, use la columna id que almacena valores únicos (en nuestro ejemplo usamos COUNT(id) ). A continuación, utilice la cláusula GROUP BY para agrupar registros según columnas (el GROUP BY categoría anterior). Después de usar GROUP BY para filtrar registros con funciones agregadas como COUNT, use la cláusula HAVING. Siempre se usa después de la cláusula GROUP BY. En HAVING, usamos una condición para comparar un valor con uno devuelto por la función agregada. En el ejemplo, comparamos si COUNT(id) devuelve un valor superior a dos. Si es verdadero, la categoría se devuelve con el recuento de productos.