Menu
Coddy logo textTech

Union

Parte de la sección Fundamentos del Journey de SQL de Coddy — lección 48 de 72.

Las uniones son diferentes de los joins. Los joins utilizan condiciones para combinar tablas, pero las uniones simplemente añaden una tabla encima de la otra. Para usar UNION escribiremos:

SELECT col1, col2, ... FROM table1
UNION
SELECT col1, col2, ... FROM table2

Ambos selects deben obedecer las siguientes reglas:

  • El número de campos debe ser igual
  • El orden es importante
  • Las columnas en la misma posición deben coincidir con los tipos de datos

Por ejemplo, supongamos que tenemos las siguientes tablas:

germany_people

idname
1Lena
2Leonie

england_people

idnombre
1George
2Lena

Problema: Queremos hacer una tabla grande con todos los nombres que tenemos.

SELECT name from germany_people
UNION
SELECT name from england_people

Resultado:

name
Lena
Leonie
George

UNION devuelve solo valores únicos, mientras que UNION ALL devuelve todos los registros tal cual:

SELECT name from germany_people
UNION ALL
SELECT name from england_people

Resultado:

nombre
Lena
Leonie
George
Lena

También puedes combinar UNION ALL con funciones de agregación, GROUP BY y ORDER BY para resumir datos a través de múltiples tablas. El truco consiste en envolver el UNION ALL dentro de una subconsulta y luego aplicar la agrupación y el ordenamiento sobre ella.

Por ejemplo, supongamos que queremos contar cuántas veces aparece cada nombre en ambas tablas:

SELECT name, COUNT(*) AS total_count
FROM (
    SELECT name FROM germany_people
    UNION ALL
    SELECT name FROM england_people
) AS combined
GROUP BY name
ORDER BY total_count DESC

Resultado:

nametotal_count
Lena2
Leonie1
George1

Aquí, UNION ALL (no UNION) se utiliza para que los duplicados como Lena se mantengan; de lo contrario, se eliminarían antes del recuento. La subconsulta combina todas las filas y luego GROUP BY + COUNT las resumen. ORDER BY ordena el resultado final.

challenge icon

Desafío

Fácil

Tablas y columnas disponibles:

  • <strong>sales_2009</strong>: <strong>product_id</strong>, <strong>quantity_sold</strong>
  • <strong>sales_2010</strong>: <strong>product_id</strong>, <strong>quantity_sold</strong>
  • <strong>sales_2011</strong>: <strong>product_id</strong>, <strong>quantity_sold</strong>

Hay 3 tablas de ventas.

Encuentra la suma de las ventas para cada producto de todas las tablas juntas.

El resultado debe incluir el product_id y las ventas totales.

Nombra esta columna total_sales.

Ordena los resultados por las ventas totales en orden descendente.

Pruébalo tú mismo

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos