Evitar duplicados usando DISTINCT en Oracle

Evitar duplicados usando DISTINCT en ORACLE es una de las mejores prácticas para garantizar conjuntos de resultados limpios y consistentes en nuestras consultas SQL. La cláusula DISTINCT se utiliza dentro de una instrucción SELECT para eliminar filas duplicadas, devolviendo solo una fila por cada grupo de valores repetidos. Esto resulta especialmente útil al trabajar con datos que contienen redundancias, como listados de clientes, productos o transacciones.

En este artículo, primero explicaré la sintaxis básica de la cláusula DISTINCT y luego mostraré ejemplos prácticos para su aplicación en diferentes escenarios. Lo interesante de DISTINCT es que puedes aplicarlo tanto a una sola columna como a combinaciones de varias columnas, lo que permite controlar con precisión qué valores deben considerarse únicos en el resultado.

La cláusula DISTINCT en Oracle es una herramienta imprescindible para optimizar la calidad de los datos y preparar resultados que sean más fáciles de interpretar. Por ejemplo, puedes utilizarla para obtener un listado único de departamentos en una empresa o para identificar las distintas categorías de productos disponibles en una base de datos.

Para más información, puedes consultar la documentación oficial de ORACLE.

Sintaxis

La sintaxis básica para evitar duplicados usando DISTINCT en Oracle es la siguiente:

select distinct columna1
from nombreTabla;

select distinct columna1, columna2
from nombreTabla;

En la primera sentencia evalúa los datos de la columna 1 para evitar duplicados mientras que en la segunda evalúa los duplicados en base a la combinación de valores de las dos columnas.

Ejemplos

Usaremos la siguiente tabla llamada empleados para realizar los ejemplos (al final de la página está disponible el script para crearla)

Mostrar los diferentes puestos

Para mostrar los valores diferentes de un campo y así evitar duplicados, escribe después del SELECT la palabra DISTINCT seguida del nombre de uno o varios campos:

select distinct puesto
from empleados;
Evitar duplicados usando DISTINCT en Oracle

Ejemplo completo

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

-- www.MiguelTroyano.com
-- Borramos la tabla si existe
drop table 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),
    fecha_alta date,
    sueldo integer
);

-- Insertamos valores
insert into empleados values (1,1,'Miguel Troyano','Analista',to_date('26/09/1986','DD/MM/YYYY'),60000);
insert into empleados values (2,1,'Ismael Troyano','Analista',to_date('01/01/2001','DD/MM/YYYY'),60000);
insert into empleados values (3,1,'Jose Troyano','Alta Dirección',to_date('01/01/2001','DD/MM/YYYY'),80000);
insert into empleados values (4,1,'Pilar Redondo','Alta Dirección',to_date('02/02/2002','DD/MM/YYYY'),80000);

-- Mostramos los diferentes puestos
select distinct puesto
from empleados;

Escribir un comentario