Función COUNT en PostgreSQL

La función COUNT en PostgreSQL es una de las funciones más utilizadas englobada en las denominadas funciones de agregación en bases de datos para contar el número de registros en una tabla o columna específica. Esta función permite obtener el total de filas que cumplen con una condición determinada, siendo fundamental en análisis de datos y generación de informes.

La función COUNT puede ser utilizada de diversas maneras, como contar todas las filas de una tabla o contar solo los registros no nulos de una columna. Es posible utilizarla junto con la cláusula GROUP BY para obtener recuentos por grupos específicos, lo que resulta útil en contextos como el análisis de ventas por categorías o el conteo de productos por proveedor.

En este artículo, te explicaré cómo utilizar la función COUNT en PostgreSQL para contar registros de manera efectiva y cómo aprovechar sus diferentes opciones para optimizar tus consultas. Para más información, puedes consultar la documentación oficial de PostgreSQL.

Sintaxis

La sintaxis para utilizar la función COUNT en PostgreSQL es la siguiente:

Count(*)

Usamos count(*) para contar todas las filas de una tabla, en concreto nos devolverá el número de filas que tiene la tabla incluyendo nulos y duplicados. Si usas la función count en una tabla muy grande puede que tarde mucho en ejecutarse ya que tiene que ir fila a fila, no es inmediato.

select count(*)
from tabla

Count(columna)

Usamos count(columna) cuando queremos contar las filas de una columna en concreto. Destacar que este conteo no tiene en cuenta los valores nulos.

select count(columna)
from tabla

Count(distinct columna)

Usamos count(distinct columna) cuando queremos contar las filas que contienen un valor distinto. Si hay dos filas con el mismo valor solo las contara una única vez (no tiene en cuenta nulos)

select count(distinct columna)
from tabla

Importante

Si se utiliza count y en el select se especifican más columnas, se debe utilizar la cláusula group by para agrupar.

Ejemplos

En el siguiente ejemplo contamos las filas de la tabla empleados:

select count(*)
from empleados;

En este otro ejemplo contamos las filas de la columna sueldo:

select count(sueldo)
from empleados;

En este otro ejemplo contamos los sueldos, agrupados por puesto:

select puesto, count(sueldo)
from empleados
group by puesto;

En este otro ejemplo contamos los diferentes sueldos, agrupados por puesto:

select puesto, count(distinct sueldo)
from empleados
group by puesto;

Ejemplo completo

Copia y pega el siguiente código en tu consola de PostgreSQL y realiza paso a paso leyendo los comentarios:

-- www.MiguelTroyano.com
-- Borramos la tabla si existe
drop table if exists empleados;

-- Creamos la tabla
create table empleados
(
    id_empleado numeric(2,0),
    id_departamento numeric(2,0),
    nombre character varying(50),
    puesto character varying(50),
    sueldo integer
);

-- Insertamos valores
insert into empleados
values (1,1,'Miguel Troyano','Analista',60000),
       (2,1,'Ismael Troyano','Analista',60000),
	   (3,1,'Jose Troyano','Director',80000),
	   (4,1,'Pilar Redondo','Directora',80000);

-- Contamos las filas de la tabla empleados
select count(*)
from empleados;

-- Contamos las filas de la columna sueldo
select count(sueldo)
from empleados;

-- Contamos las filas de la columna sueldo
-- agrupados por puesto
select puesto, count(sueldo)
from empleados
group by puesto;

-- Contamos las diferentes filas de la columna
-- sueldo agrupados por puesto
select puesto, count(distinct sueldo)
from empleados
group by puesto;

Escribir un comentario