Prashanth Jayaram

Revisión, ejemplos y uso de SQL Union

November 4, 2019 by

Este artículo proporcionará una revisión y verificación profunda en el operador SQL Union, describiendo sus múltiples usos junto con ejemplos y explorando algunas preguntas comunes como las diferencias de utilización entre Union vs Union All.

Para abordar y analizar los requisitos de datos que se aplican en el mundo real, es posible que podríamos necesitar combinar conjuntos de resultados de múltiples fuentes de datos para poder hacer un análisis de datos o crear nuevos conjuntos de datos. Los conjuntos de datos pueden ser idénticos, pero hay posibilidades de que se haga referencia a tablas diferentes. ¿Hay alguna manera de combinar los datos en una sola consulta? ¿Son los operadores de set una opción viable? Comencemos y veamos cómo se pueden usar algunos de los operadores existentes para ayudarnos a abordar estos desafíos comunes.

En este artículo, revisaremos:

  1. Lo que es un conjunto de operadores
  2. Union vs Union All y cómo funcionan
  3. Analizar las reglas para usar Union vs Union All
  4. Sintaxis del operador SQL
  5. Cómo usar una cláusula simple de Unión SQL en la instrucción select
  6. Cómo usar SQL Union con las consultas que tienen la cláusula WHERE
  7. Cómo usar la cláusula SELECT INTO con Union
  8. Cómo usar SQL Union con las consultas que tienen una cláusula WHERE y orden por cláusula
  9. Cómo usar SQL Union y SQL Pivot
  10. Cómo usar SQL Union con GRUPO y cláusulas HAVING

Operadores

Un operador es un símbolo o una palabra clave que define una acción que se realiza en una o más expresiones en la instrucción Select.

Establecer operador

Veamos los detalles de los los operadores de conjuntos en SQL Server y cómo usarlos.

Hay cuatro operadores básicos de conjuntos en SQL Server:

  1. Union
  2. Union All
  3. EXCEPT
  4. INTERSECT

Unión

El operador de Unión combina los resultados de dos o más consultas dando lugar a la creación de un único conjunto de resultados que incluye todas las filas que pertenecen a todas las consultas en la Unión. En esta operación, combina dos consultas más y elimina los duplicados.

Por ejemplo, la tabla ‘A’ tiene 1,2 y 3 y la tabla ‘B’ tiene 3,4,5.

El equivalente SQL de los datos anteriores es proporcionado a continuación

En la salida de datos, puede ver una lista distinta de los registros de los dos conjuntos de resultados

Union Total (Union All)

Cuando miramos Unión vs Unión total, pese a que encontramos que los mismos son bastante similares, pero se puede observar entre ellos que tienen algunas diferencias importantes desde la perspectiva de los resultados de rendimiento.

El operador UNION combina los resultados de dos o más consultas en un único conjunto de resultados los mismos que incluyen todas las filas que pertenecen a todas las consultas en la Unión. En términos simples, combina los dos o más conjuntos de filas y mantiene los duplicados.

Por ejemplo, la tabla ‘A’ tiene 1,2 y 3 y la tabla ‘B’ tiene 3,4,5.

El equivalente SQL de los datos anteriores se proporciona a continuación

En la salida, puede ver todas las filas que también incluyen registros repetidos.

INTERSECT

El operador intersect mantiene las filas que son comunes a todas las consultas.

Para el mismo conjunto de datos del ejemplo mencionado anteriormente, se puede observar que la salida del operador de intersección se proporciona a continuación

La representación SQL de las tablas anteriores.

La fila ‘3’ es común entre los dos conjuntos de resultados.

EXCEPT O EXCLUSIÓN

El operador EXCEPT enumera las filas en el primero que no están en el segundo.

Vale la pena mencionar Para el mismo conjunto de datos del ejemplo anteriormente indicado, la salida del operador Excepto se da a continuación

La representación SQL de las tablas anteriores con el operador EXCEPT se proporciona a continuación

Enumere las filas no comunes del primer conjunto o grupo de datos.

Nota: Es muy fácil visualizar un operador de conjunto utilizando para tal fin un diagrama de Venn, donde cada una de las tablas está representada por formas que se cruzan. Las intersecciones de las formas, donde se superponen las tablas, son las filas donde se cumple una condición.

Sintaxis:

La sintaxis para los operadores UNION vs UNION ALL en SQL es la siguiente:

SELECT Column1, Column2, … ColumnN
FROM <table>
[WHERE conditions]
[GROUP BY Column(s]]
[HAVING condition(s)]
UNION
SELECT Column1, Column2, … ColumnN
FROM table
[WHERE condition(s)];
ORDER BY Column1,Column2…

Reglas::

Hay algunas reglas que se aplican a todos los operadores establecidos:

  1. Las expresiones en cada fila o el número de columnas que se definen en cada consulta deben tener el mismo orden
  2. Los conjuntos de filas de instrucciones SQL posteriores deben coincidir con el tipo de datos de la primera consulta
  3. Los paréntesis pueden construir otros operadores de conjuntos en la misma instrucción.
  4. Es posible tener una cláusula ORDER BY, pero esa debería ser la última instrucción del SQL
  5. Las cláusulas GROUP BY y HAVING se pueden aplicar a la consulta individual

Nota:

  1. Todos estos operadores Set eliminan duplicados, excepto el operador Union All
  2. Los nombres de las columnas de salida se refieren desde la primera consulta, es decir, cuando ejecutamos las instrucciones SELECT con cualquiera de los operadores Set y el conjunto de resultados de cada una de las consultas puede tener diferentes nombres de columna, por lo que el resultado de la instrucción SELECT hace referencia a los nombres de columna ejecutada en la primera consulta en dicha operación.
  3. Es importante mencionar que SQL JOIN se usa con mayor frecuencia para combinar columnas de varias tablas relacionadas, mientras que los operadores SET combinan filas de varias tablas.
  4. Cuando los tipos de expresión son iguales pero difieren en precisión, escala o longitud, el resultado que se obtiene y se determina se logra en base a las mismas reglas para combinar expresiones

Ejemplos:

Las siguientes consultas T-SQL se preparan y se ejecutan en la base de datos Adventureworks2014. La mima que usted puede descargar la muestra de AdventireWorks2014 base de datos aquí..

  1. Cómo usar una simple cláusula de UNION en SQL en la instrucción select

    En este ejemplo, el conjunto de resultados incluye un conjunto distinto de filas del primer conjunto y en el segundo conjunto. El siguiente ejemplo se basa en las reglas 1, 3 y 5.

    La salida es una combinación de operadores Union y Union All los mismos que usan paréntesis.

  2. 2. Cómo usar SQL Union con las consultas que tienen la cláusula WHERE

    El siguiente ejemplo muestra el uso de Union en dos instrucciones SELECT con una cláusula WHERE y una cláusula ORDER BY.

    El siguiente ejemplo se basa en las reglas 1,2 y 3.


  3. Cómo usar la cláusula SELECT INTO con SQL Union

    El siguiente ejemplo crea una nueva tabla dbo.dummy utilizando la cláusula INTO en la primera instrucción SELECT que contiene el conjunto de resultados finales de la Unión de las columnas ProductModel y el nombre de dos conjuntos de resultados diferentes. En este caso, se deriva de la misma tabla, pero en un caso y una situación del mundo real, esto también puede dar origen a que sean dos tablas diferentes. El siguiente ejemplo se basa en las reglas 1, 2 y 4.


  4. Cómo usar SQL Union con las consultas que tienen una cláusula WHERE y una cláusula ORDER BY

    Esto solo es posible cuando utilizamos funciones TOP o funciones agregadas en cada instrucción select del operador Union. En este caso, se enumeran las 10 filas principales de cada conjunto de resultados y luego las mismas se combinan con las filas usando la cláusula Union para obtener un resultado final. También usted verá que el orden por cláusula se coloca en toda la instrucción select.


  5. Cómo usar SQL Union y SQL Pivot

    En el siguiente ejemplo, estamos tratando de combinar más de un conjunto de resultados. En una situación del mundo real, puede tener números financieros de varias regiones o departamentos y como las tablas pueden tener las mismas columnas y tipos de datos, pero usted desea colocarlos en un conjunto de filas y en un solo informe. En tal escenario, usaría la cláusula Union y es muy fácil combinar resultados y transformar los datos en un informe más significativo.

    En este ejemplo, ProductModel se clasifica en Top10, Top100, Top 100 y transforma las filas como un conjunto de valores agregados en las columnas respectivas. El siguiente ejemplo se basa en la regla 2

    Los valores NULL son muy importantes con los Operadores de conjuntos y se tratan como de bases de datos de ciudadanos de segunda clase. Debido a que los NULL se consideran únicos y si dos filas tienen un NULL en la misma columna, entonces se considerarían idénticos, por lo que, en ese caso, en realidad está comparando un NULL con un NULL y obteniendo igualdad. En el siguiente ejemplo, verá el uso de valores NULL. En este caso, usted puede observar que se opera con la función de agregado, máx.


Cómo usar SQL Union con Instrucciones Group y Have

Los siguientes ejemplos usan el operador Unión para combinar el resultado de la tabla que tiene en su totalidad la cláusula condicional definida usando la cláusula Group by y Having clause.

El apellido se analiza especificando las condiciones en la cláusula have.

El siguiente ejemplo se basa en la regla 5.

Podemos ver que los apellidos se derivan en dos columnas diferentes usando el operador Union

Eso es todo por ahora …

Resumen

Hasta ahora, en esta sección nosotros hemos enfocado y abordamos varias opciones y reglas disponibles para usar los operadores Set y entender cuándo usarlas. Al determinar ya sea si se usan Union vs Union All, se podrá observar que hay algunos puntos a considerar. Use Union All si sabe que los conjuntos de resultados de múltiples consultas no se superponen o también los mismos generan duplicados y adicionalmente recuerde que, si necesita usar paréntesis, puede hacerlo. También puede pivotar y transformar la salida.

Sin embargo, usted solo debe asegurarse de que sus tipos de datos coincidan y si necesita hacer un ORDER BY, hágalo al final después de que haya ejecutado todas esas consultas establecidas. Por naturaleza, cuando se trata de Union vs Union All, Union All es más rápido que Union; ya que los operadores de la Unión incurren en mayores gastos generales adicionales para eliminar duplicados.

Espero que ustedes hayan disfrutado este artículo sobre el operador SQL Union. No dude en hacer cualquier pregunta en los comentarios a continuación.

Prashanth Jayaram
T-SQL

Acerca de Prashanth Jayaram

Soy un experto en tecnologías con más de 11 años de experiencia en tecnologías de base de datos. Soy Microsoft Certified Professional y tengo el respaldo de una Licenciatura en Master en aplicaciones de computadoras. Mi especialidad es el diseño y la implementación de soluciones de alta disponibilidad y la migración de bases de datos multiplataforma. Las tecnologías en las que trabajo actualmente son SQL Server, PowerShell, Oracle y MongoDB. Ver todas las publicaciones de Prashanth Jayaram

168 Views