El operador DISTINCT en Oracle SQL es una herramienta fundamental para extraer valores únicos de un conjunto de datos. Permite eliminar duplicados en los resultados de una consulta y es especialmente útil cuando se desea analizar datos de manera más clara o preparar informes sin valores repetidos.
¿Qué es DISTINCT y cómo funciona?
El operador DISTINCT se utiliza en una instrucción SELECT para asegurar que los resultados no contengan filas duplicadas. Cuando se aplica a una o varias columnas, el operador considera la combinación única de valores en esas columnas para determinar qué filas incluir en los resultados.
Sintaxis básica:
SELECT DISTINCT columna1, columna2, ...
FROM tabla;
Ejemplo Básico del Uso de DISTINCT
Supongamos que tienes una tabla llamada EMPLE con las siguientes columnas y datos:
| ID_EMPLE | DEPARTAMENTO | OFICIO |
|---|---|---|
| 1 | VENTAS | ANALISTA |
| 2 | VENTAS | GERENTE |
| 3 | MARKETING | ANALISTA |
| 4 | VENTAS | ANALISTA |
| 5 | MARKETING | GERENTE |
Consulta con duplicados:
SELECT departamento
FROM emple;
Resultados:
VENTAS
VENTAS
MARKETING
VENTAS
MARKETING
Consulta utilizando DISTINCT:
SELECT DISTINCT departamento
FROM emple;
Resultados:
VENTAS
MARKETING
- Aquí,
DISTINCTelimina los valores repetidos en la columnadepartamento.
Uso de DISTINCT con Múltiples Columnas
Cuando se usa con varias columnas, DISTINCT considera la combinación única de valores en todas las columnas especificadas.
Ejemplo:
SELECT DISTINCT departamento, oficio
FROM emple;
Resultados:
VENTAS ANALISTA
VENTAS GERENTE
MARKETING ANALISTA
MARKETING GERENTE
- El operador considera ambas columnas juntas para determinar cuáles son únicas.
Filtrando Datos con DISTINCT y WHERE
Puedes combinar DISTINCT con cláusulas como WHERE para aplicar filtros adicionales.
Ejemplo:
SELECT DISTINCT oficio
FROM emple
WHERE departamento = 'VENTAS';
Resultados:
ANALISTA
GERENTE
Uso de DISTINCT con Funciones Agregadas
DISTINCT también se puede utilizar dentro de funciones agregadas como COUNT para contar únicamente valores distintos.
Ejemplo:
SELECT COUNT(DISTINCT departamento) AS departamentos_unicos
FROM emple;
Resultados:
2
- Aquí, se cuenta cuántos departamentos únicos existen en la tabla.
Ejemplo Avanzado: Combinación de DISTINCT con Ordenación
DISTINCT se puede combinar con ORDER BY para obtener valores únicos ordenados.
Ejemplo:
SELECT DISTINCT departamento
FROM emple
ORDER BY departamento ASC;
Resultados:
MARKETING
VENTAS
- Primero se filtran los valores únicos y luego se ordenan alfabéticamente.
Errores Comunes al Usar DISTINCT
- Usar
DISTINCTinnecesariamente: Si la consulta ya produce resultados únicos debido al diseño de la tabla (por ejemplo, si estás seleccionando una columna con clave primaria), el uso deDISTINCTno tiene sentido. - Confusión con
GROUP BY: Aunque ambos eliminan duplicados en cierto sentido,GROUP BYse usa para agrupar datos y realizar cálculos agregados, mientras queDISTINCTsimplemente filtra filas duplicadas. - Problemas de rendimiento: El uso de
DISTINCTen tablas grandes puede afectar el rendimiento, especialmente si no se utilizan índices adecuados.
Conclusión
El operador DISTINCT en Oracle SQL es una herramienta poderosa para eliminar duplicados y analizar datos únicos. Su uso correcto puede simplificar consultas y mejorar la claridad de los resultados. Sin embargo, debe aplicarse con cuidado para evitar impactos negativos en el rendimiento y consultas innecesariamente complejas.
Ya sea que estés generando informes o limpiando datos, dominar DISTINCT te ayudará a manejar tus consultas SQL de manera más eficiente y efectiva.

