La función COUNT en Oracle es una de las funciones más utilizadas dentro de las denominadas funciones de agregación en bases de datos, diseñada 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 una condición dada, siendo esencial para el análisis de datos y la generación de informes.
COUNT se puede usar de varias formas, como contar todas las filas de una tabla o contar únicamente los registros no nulos de una columna. También es compatible con la cláusula GROUP BY, lo que permite obtener recuentos por grupos específicos. Esto resulta especialmente útil en casos como analizar ventas por categorías o contar productos por proveedor.
En este artículo, te explicaré cómo utilizar la función COUNT en Oracle para contar registros de manera efectiva y cómo aprovechar sus diversas opciones para optimizar tus consultas. Para más información, consulta la documentación oficial de la función COUNT en Oracle.
Versión
Este artículo ha sido redactado utilizando la versión Oracle Database 23ai para garantizar compatibilidad y precisión en los ejemplos presentados.
Sintaxis
La sintaxis de la función COUNT en Oracle 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 contará 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
Usaremos la siguiente tabla llamada empleados para realizar los ejemplos (al final de la página está disponible el script para crear la tabla)
Contar todas las filas de una tabla
SELECT COUNT(*) AS TOTAL_EMPLEADOS FROM EMPLEADOS;
Explicación: Esta consulta cuenta todas las filas de la tabla empleados
, independientemente de los valores que contengan las columnas. Cada fila representa un empleado, por lo que el resultado muestra el número total de empleados registrados en la tabla.
Uso típico:
- Estadísticas generales: Esta consulta es muy útil en informes para mostrar rápidamente el tamaño de un dataset, como el total de empleados en una empresa o el total de pedidos en un sistema.
- Obtener el tamaño de la tabla: Se utiliza comúnmente para verificar cuántos registros hay en una tabla, por ejemplo, después de una carga de datos o una limpieza de los mismos.
- Auditoría de datos: Permite comparar el conteo total de registros contra otras fuentes de información para asegurarse de que la tabla contiene todos los datos esperados.
Contar filas de una columna
SELECT COUNT(SUELDO) FROM EMPLEADOS;
Explicación: Esta consulta cuenta cuántos registros de la tabla empleados
tienen un valor no nulo en la columna sueldo
. A diferencia de COUNT(*)
, que incluye todas las filas, COUNT(sueldo)
excluye aquellas donde el valor de la columna sueldo
sea NULL
. Por ejemplo, si hay 6 empleados en la tabla, pero solo 4 tienen un valor registrado en sueldo
(los otros 2 son NULL
), el resultado será 4
.
Uso típico:
- Validar la calidad de los datos en una tabla: por ejemplo, para confirmar cuántos empleados tienen un sueldo asignado frente a los que no.
- Identificar registros incompletos o realizar auditorías. Si los sueldos de algunos empleados no están registrados, esta consulta ayuda a detectarlo indirectamente.
- Aplicar análisis condicional sobre una columna sin necesidad de preocuparse por los valores nulos que podrían distorsionar el conteo.
Contar filas de una columna agrupadas por otra
SELECT PUESTO, COUNT(SUELDO) FROM EMPLEADOS GROUP BY PUESTO;
Explicación: Esta consulta agrupa los datos de la tabla empleados
por la columna puesto
y cuenta cuántos registros de cada grupo tienen un valor no nulo en la columna sueldo
.
- El resultado será una lista de los diferentes valores en
puesto
, junto con el número de empleados que tienen un sueldo registrado para cada puesto. - Si algún empleado tiene un
NULL
en la columnasueldo
, no se contará en ese grupo.
Uso típico:
- Analizar la distribución de datos basados en categorías: aquí se está identificando cuántos empleados por puesto tienen registrado un sueldo.
- Detectar inconsistencias en los datos. Por ejemplo, si un puesto muestra un conteo de
0
, puede ser una señal de datos incompletos en la columnasueldo
. - Generar informes segmentados, como el número de empleados con información salarial en cada posición laboral.
Contar filas distintas de una columna agrupadas por otra
SELECT PUESTO, COUNT(DISTINCT SUELDO) FROM EMPLEADOS GROUP BY PUESTO;
Explicación: Esta consulta agrupa los datos de la tabla empleados
por la columna puesto
y cuenta cuántos valores únicos (distintos) existen en la columna sueldo
para cada puesto.
COUNT(DISTINCT sueldo)
: En lugar de contar todas las filas del grupo, este enfoque solo cuenta los valores únicos de la columnasueldo
. Si hay empleados en el mismo puesto con el mismo sueldo, se contará solo una vez para ese valor.- Si hay valores
NULL
en la columnasueldo
, no se incluirán en el conteo.
Uso típico:
- Identificar variaciones salariales por puesto: Este enfoque es útil para saber si dentro de un puesto hay diversidad en los salarios o si todos los empleados del puesto ganan lo mismo.
- Detección de anomalías: Si esperas que todos los empleados de un puesto tengan un único sueldo y encuentras múltiples sueldos distintos, esto puede señalar una discrepancia en los datos.
- Informes salariales segmentados por puestos: Ofrece una visión rápida de la diversidad salarial en cada grupo de trabajo.
Ejemplo completo
Copia y pega el siguiente código en tu consola de Oracle y realiza paso a paso leyendo los comentarios para comprender la función COUNT en Oracle:
Para visualizar las instrucciones es necesario iniciar sesión desde desde la barra lateral derecha, desde los comentarios o desde el pie de página. Puedes utilizar tu cuenta de Microsoft o de Google. Gracias.