Saltar al contenido principal

Cómo utilizar SQL MINUS

El operador SQL MENOS resta un conjunto de resultados de otro. Es fácil de usar: Sólo tienes que poner MENOS entre dos consultas para excluir los registros comunes del primer conjunto.
Actualizado 30 jul 2024  · 10 min de lectura

En SQL, el operador MINUS es una potente herramienta para restar un conjunto de resultados de otro. Este operador es esencial para situaciones en las que debemos identificar las filas únicas de un conjunto de datos, pero no de otro.

En este artículo, exploraremos la finalidad, la sintaxis y las aplicaciones prácticas del operador SQL MINUS, garantizando una comprensión profunda de la consulta SQL y la manipulación de datos eficaces.

La respuesta rápida: Cómo utilizar SQL MINUS

El operador SQL MINUS resta un conjunto de resultados de otro, devolviendo sólo las filas únicas del primer conjunto que no están presentes en el segundo.

Imaginemos que tenemos dos tablas de empleados, una de 2023 y otra de 2024. Queremos averiguar qué empleados estaban presentes en Employees2023 pero no lo están en Employees2024. Podríamos utilizar una sentencia SQL MINUS para obtener la respuesta. 

SELECT EmployeeID, Name, Department
FROM Employees2023
MINUS
SELECT EmployeeID, Name, Department
FROM Employees2024;
Employees2023:

| EmployeeID | Name    | Department |

|------------|---------|------------|

| 1          | Alice   | HR         |

| 2          | Bob     | IT         |

| 3          | Charlie | Sales      |

| 4          | David   | IT         |


Employees2024:

| EmployeeID | Name    | Department |

|------------|---------|------------|

| 2          | Bob     | IT         |

| 3          | Charlie | Sales      |

| 4          | David   | IT         |

| 5          | Eve     | Marketing  |


Expected Output:

| EmployeeID | Name  | Department |

|------------|-------|------------|

| 1          | Alice | HR         |

¿Qué es el operador SQL MENOS?

El operador SQL MINUS compara dos sentencias SELECT y devuelve las filas de la primera sentencia SELECT que estén ausentes en la segunda. En concreto, realiza una operación de diferencia de conjuntos, que es crucial para diversas tareas de análisis de datos. Esto es especialmente útil para las tareas de limpieza, validación y consolidación de datos, en las que debemos señalar las discrepancias entre conjuntos de datos.

Sintaxis del operador SQL MINUS

La sintaxis básica del operador MINUS es la siguiente:

SELECT column1, column2, ...
FROM table1
MINUS
SELECT column1, column2, ...
FROM table2;

Los componentes de la consulta son

  • Declaración SELECT: La sentencia SELECT especifica las columnas deseadas y la tabla de la que recuperarlas.
  • Operador MINUS: El operador MINUS resta el segundo conjunto de resultados del primero.
  • Los componentes opcionales como la cláusula WHERE para filtrar los datos.
SELECT column1, column2, ...
FROM table1
WHERE condition
MINUS
SELECT column1, column2, ...
FROM table2
WHERE condition;

Puntos importantes que debes recordar

Para utilizar correctamente el operador MINUS, ten en cuenta estos puntos clave:

  • Ambas declaraciones SELECT deben tener el mismo número de columnas.
  • Los tipos de datos de las columnas correspondientes deben ser iguales.
  • Aunque los nombres de columna no tienen por qué ser idénticos, sus tipos de datos deben coincidir.
  • MINUS elimina las filas duplicadas del conjunto de resultados final, devolviendo sólo filas distintas.

Ejemplos prácticos

Veamos ahora algunos ejemplos prácticos para consolidar nuestra comprensión.

Ejemplo con una sola expresión

Utilizamos la siguiente consulta para encontrar los departamentos únicos en 2019 que no están presentes en 2020:

SELECT Department
FROM Employees2019
MINUS
SELECT Department
FROM Employees2020;

Ejemplo con cláusula ORDER BY

Utilizamos la siguiente consulta para obtener los empleados únicos en 2019, ordenados por sus nombres:

SELECT EmployeeName
FROM Employees2019
MINUS
SELECT EmployeeName
FROM Employees2020
ORDER BY EmployeeName;

Casos de uso habituales del operador MINUS

El operador SQL MINUS es una herramienta versátil que puede aplicarse en diversos escenarios para mejorar el análisis y la gestión de datos. A continuación, exponemos varios casos de uso cotidiano en los que el operador MINUS resulta especialmente útil.

Validación de datos en procesos ETL

Garantizar la coherencia y precisión de los datos en los procesos ETL (Extraer, Transformar, Cargar). El operador de MINUS puede validar los datos comparando los conjuntos de datos de origen y de destino.

Veamos un ejemplo. Para validar que todos los registros de la tabla de preparación se han cargado en la tabla final, podemos utilizar la siguiente consulta:

SELECT *
FROM StagingTable
MINUS
SELECT *
FROM FinalTable;

Identificar los datos que faltan entre dos conjuntos de datos

Al consolidar datos de múltiples fuentes, es esencial identificar los registros que faltan para garantizar la exhaustividad:

SELECT CustomerID
FROM SourceA
MINUS
SELECT CustomerID
FROM SourceB;

Limitaciones y alternativas

Aunque el operador SQL MINUS es una potente herramienta para comparar conjuntos de datos, tiene ciertas limitaciones y puede no ser siempre la mejor opción para todos los casos. Comprender estas limitaciones y conocer las alternativas disponibles puede ayudarnos a tomar mejores decisiones cuando trabajemos con consultas SQL.

  1. No es compatible con todas las bases de datos: El operador MINUS no está soportado universalmente en todos los sistemas de gestión de bases de datos SQL. Aunque está disponible en Oracle, no se admite en SQL Server, que utiliza el operador EXCEPT.
  2. Requisitos de columnas y tipos de datos: Las dos sentencias SELECT utilizadas con el operador MINUS deben tener el mismo número de columnas, y las columnas correspondientes deben tener tipos de datos compatibles. Esto puede ser restrictivo cuando se trabaja con consultas complejas en las que intervienen diferentes conjuntos de datos.
  3. Sensibilidad a mayúsculas y minúsculas: El operador MINUS distingue entre mayúsculas y minúsculas. Por ejemplo, "Manzana" y "manzana" se consideran valores diferentes. Si no se tiene en cuenta la sensibilidad a los casos, puede dar lugar a resultados inesperados.
  4. Sin clasificación: El conjunto de resultados devuelto por el operador MINUS no está ordenado. Si se requiere un orden específico, debe utilizarse una cláusula adicional ORDER BY.
  5. Problemas de rendimiento: El operador MINUS puede ser lento cuando se trata de grandes conjuntos de datos, ya que necesita realizar una comparación completa entre los dos conjuntos de resultados. Esto puede provocar cuellos de botella en el rendimiento de las aplicaciones a gran escala.

Una alternativa al operador MINUS es el operador EXCEPT, que es funcionalmente similar y está ampliamente soportado en diferentes bases de datos SQL.

  • MENOS: Estándar en Oracle y en algunas otras bases de datos.
  • EXCEPTO: Estándar en SQL Server, PostgreSQL y otras bases de datos.

Conclusión

Comprender el operador SQL MINUS es crucial para una consulta SQL y una manipulación de datos eficaces. Este operador nos ayuda a identificar filas únicas entre dos conjuntos de datos, lo que lo hace valioso para tareas de validación, limpieza y consolidación de datos. Practica con diferentes conjuntos de datos para dominar el uso del operador MINUS y mejorar tus habilidades SQL.

Si realmente quieres mejorar tus conocimientos de SQL, haz un curso de DataCamp como Introducción a SQL. Este curso proporciona una buena base para temas más avanzados. Si crees que dominas los conceptos básicos, prueba nuestro curso SQL Intermedio, que profundiza en las complejidades de SQL, incluidas las operaciones de conjunto como MINUS.

Preguntas frecuentes

¿Para qué sirve el operador SQL MINUS?

El operador SQL MINUS se utiliza para restar un conjunto de resultados de otro, devolviendo sólo las filas únicas del primer conjunto que no estén presentes en el segundo.

¿Cuáles son los requisitos sintácticos para utilizar el operador SQL MINUS?

Las dos sentencias SELECT de la operación MINUS deben tener el mismo número de columnas, y los tipos de datos de las columnas correspondientes deben ser iguales.

¿Se puede utilizar el operador SQL MINUS en todas las bases de datos SQL?

No, el operador MINUS no es compatible con todas las bases de datos SQL. Por ejemplo, no se admite en MySQL, pero está disponible en Oracle.

¿Cuáles son algunos casos de uso común del operador SQL MINUS?

Los casos de uso habituales incluyen la validación de datos en procesos ETL, la identificación de datos que faltan entre dos conjuntos de datos, y la limpieza y consolidación de datos de múltiples fuentes.

¿Cuál es la diferencia entre los operadores SQL MINUS y EXCEPT?

El operador MINUS se utiliza principalmente en Oracle y algunas otras bases de datos, mientras que el operador EXCEPT cumple una función similar y se utiliza en SQL Server, PostgreSQL y otras bases de datos. Ambos operadores devuelven filas únicas de la primera sentencia SELECT que no están presentes en la segunda.

¿En qué se diferencia el operador SQL MINUS de un anti join?

El operador MINUS en SQL se utiliza para devolver todas las filas de la primera consulta que no están presentes en la segunda. Es una operación de conjunto que compara los resultados de dos consultas y devuelve la diferencia. En cambio, una antiunión es un tipo de unión que devuelve filas de la primera tabla cuando no existen filas coincidentes en la segunda tabla. Esto se puede implementar utilizando un LEFT JOIN combinado con una cláusula WHERE para filtrar las filas en las que no se cumpla la condición de unión.

Temas

Aprende SQL con DataCamp

curso

Introduction to SQL

2 hr
886.8K
Learn how to create and query relational databases using SQL in just two hours.
Ver detallesRight Arrow
Comienza El Curso
Ver másRight Arrow
Relacionado

tutorial

Ejemplos y tutoriales de consultas SQL

Si quiere iniciarse en SQL, nosotros le ayudamos. En este tutorial de SQL, le presentaremos las consultas SQL, una potente herramienta que nos permite trabajar con los datos almacenados en una base de datos. Verá cómo escribir consultas SQL, aprenderá sobre

Sejal Jaiswal

21 min

tutorial

Seleccionar varias columnas en SQL

Aprende a seleccionar fácilmente varias columnas de una tabla de base de datos en SQL, o a seleccionar todas las columnas de una tabla en una simple consulta.
DataCamp Team's photo

DataCamp Team

3 min

tutorial

Cómo utilizar un alias SQL para simplificar tus consultas

Explora cómo el uso de un alias SQL simplifica tanto los nombres de las columnas como los de las tablas. Aprende por qué utilizar un alias SQL es clave para mejorar la legibilidad y gestionar uniones complejas.
Allan Ouko's photo

Allan Ouko

9 min

tutorial

Cómo utilizar GROUP BY y HAVING en SQL

Una guía intuitiva para descubrir los dos comandos SQL más populares para agregar filas de tu conjunto de datos
Eugenia Anello's photo

Eugenia Anello

6 min

tutorial

FUNCIÓN SQL COUNT()

COUNT() te permite contar el número de filas que cumplen determinadas condiciones. Aprende a utilizarlo en este tutorial.
Travis Tang 's photo

Travis Tang

3 min

See MoreSee More