Utilizamos la función COUNT en PostgreSQL para contar registros. Podemos contar una tabla entera o el número de registros de una columna. La función COUNT está englobada en las denominadas funciones de agregación.
Sintaxis
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
Lenguaje del código: JavaScript (javascript)
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
Lenguaje del código: JavaScript (javascript)
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
Lenguaje del código: JavaScript (javascript)
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;
Lenguaje del código: JavaScript (javascript)
En este otro ejemplo contamos las filas de la columna sueldo:
select count(sueldo)
from empleados;
Lenguaje del código: JavaScript (javascript)
En este otro ejemplo contamos los sueldos, agrupados por puesto:
select puesto, count(sueldo)
from empleados
group by puesto;
Lenguaje del código: JavaScript (javascript)
En este otro ejemplo contamos los diferentes sueldos, agrupados por puesto:
select puesto, count(distinct sueldo)
from empleados
group by puesto;
Lenguaje del código: JavaScript (javascript)
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;
Lenguaje del código: JavaScript (javascript)