Función COUNT en Oracle

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)

Ejemplos

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.

Contar todas las filas de una 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.

Contar filas de una columna

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 columna sueldo, no se contará en ese grupo.
Contar filas de una columna agrupadas por otra

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 columna sueldo.
  • 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 columna sueldo. 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 columna sueldo, no se incluirán en el conteo.
Contar filas distintas de una columna agrupadas por otra

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.

Escribir un comentario